$('#div01 div').first().css({'background-color':'yellow'});
<div class="container">
<div id="div01">
<h3>first() 사용</h3>
<div class="box">
<p>div 태그의 자식 태그인 p 태그</p>
<p>div 태그의 자식 태그인 2번째 p 태그</p>
</div>
<div class="box">
<p>div 태그의 자식 태그인 p 태그</p>
<p>div 태그의 자식 태그인 2번째 p 태그</p>
</div>
<div class="box">
<p>div 태그의 자식 태그인 p 태그</p>
<p>div 태그의 자식 태그인 2번째 p 태그</p>
</div>
</div>
$('#div02 div').last().css({'background-color':'yellow'});
<div id="div02">
<h3>last()사용</h3>
<div class="box">
<p>div 태그의 자식 태그인 p 태그</p>
<p>div 태그의 자식 태그인 2번째 p 태그</p>
</div>
<div class="box">
<p>div 태그의 자식 태그인 p 태그</p>
<p>div 태그의 자식 태그인 2번째 p 태그</p>
</div>
<div class="box">
<p>div 태그의 자식 태그인 p 태그</p>
<p>div 태그의 자식 태그인 2번째 p 태그</p>
</div>
</div>
$('#div03 p').eq(1) .css({'background-color' : 'yellow'});
<div id="div03">
<h3>eq()사용</h3>
<p>eq() 선택할 p 태그 (0 index)</p>
<div style="border :1px solid black">
<p>eq() 선택할 p 태그 (1 index)</p>
<div style="border : 1px dashed black">
<p>eq() 선택할 p 태그 (2 index)</p>
</div>
<p>eq() 선택할 p 태그 (3 index)</p>
<p>eq() 선택할 p 태그 (4 index)</p>
</div>
</div>
<div id="div04">
<h3>filter() 사용</h3>
<div >
<p>filter()로 검색할 p태그 중 하나</p>
<p class="intro">filter()로 실제로 검색될 p 태그</p>
<p>중간에 있어도 선택 안 됨</p>
<p class="intro">선택될 p 태그 2번째 꺼</p>
<p>이 태그는 선택 안 됨</p>
</div>
</div>
$('#div04 p').filter('.intro').css('background-color', 'yellow');
$('#div05 p') .not('.intro').css('background-color', 'yellow');
<div id="div05">
<h3>not() 사용</h3>
<div>
<p>not()을 사용하여 선택할 첫번째 태그</p>
<p class="intro">not을 사용하여 제외할 태그</p>
<p>이것도 선택함</p>
<p class="intro">not을 사용하여 제외할 태그</p>
<p>not을 사용하여 선택할 마지막 태그</p>
</div>
</div>
var numbers = ["one","two","three"];
console.log('-----------Date 객체 사용하기---------------');
let now = new Date();
console.log(now);
console.log(now.toLocaleString());
console.log(now.toString());
console.log(now.getFullYear());
console.log(now.getUTCFullYear());
console.log(now.getMonth());
console.log(now.getDate());
console.log(now.getDay());
console.log(`현재 시간 : ${now.getHours()}`);
console.log(`현재 UTC시간 : ${now.getUTCHours()}`);
console.log(`현재 분 : ${now.getMinutes()}`);
console.log(`현재 초 : ${now.getSeconds()}`);
console.log("\n---------Math 객체 사용하기----------\n");
console.log(`PI : ${Math.PI}`); //3.141592....
let result = 10/3;
console.log(`10 / 3을 그대로 출력 시 ${result}`); //3.3333..
console.log(`10 / 3 의 소수점 올리기 : ${Math.ceil(result)}`); // 4
console.log(`10/ 3의 소수점 버리기 : ${Math.floor(result)}`); // 3
console.log(`5.5에 대한 반올림 : ${Math.round(5.5)}`); //5부터 반올림된다.
console.log(`5.4에 대한 반올림 : ${Math.round(5.4)}`);
console.log(`매개변수 중 최댓값 선택하기 : ${Math.max(10,20,30,40)}`);
console.log(`매개변수 중 최솟값 선택하기 : ${Math.min(10,20,30,5)}`);
현재 문서의 url 주소 정보 담겨있음
요소명.getElementById("id명")
요소명.getElementByClassName("class명")
노드.querySelector(선택자) : 한 개의 값만 반환
노드.querySelectorAll(선택자 혹은 태그 ): 배열 형태로 반환
id는 # class는 .
innerText : 텍스트 내용 수정
innerHTML : html 태그까지 포함해서 텍스트 내용 지정
단일 상속을 하기 때문에 한 부모만 가능.
여러 부모 받고 싶으면 interface사용해야
자식 객체 생성하면 부모 객체도 생성된다.
부모 생성자 호출 완료 후 자식 생성자 호출
상속 통해서 자식 클래스만 생성 가능
public abstract class 클래스{
// 필드
// 생성자
// 메서드
}
타이어 규격 정해져 있으면 다양한 회사에서 그 규격에 맞춰 타이어 생산.
부모클래스의 변수에 자식 클래스 타입이 자동 타입 변환
animal, dog, cat, animalex
// 추상 클래스 : 추상 메서드를 1개 이상 가지고 있는 클래스를 추상 클래스라 한다. 1개만 있어도 무조건!!
// 추상 클래스는 자체적으로 객체를 생성할 수 없음(변수는 가능) new 사용 불가능.
// 자식 클래스가 추상 클래스를 상속 받았을 경우 반드시 추상 메서드를 오버라이딩해야 함.
// (만약 오버라이딩 하지 않을 경우 자식 클래스도 추상 클래스로 선언해야 함.)
// 추상 클래스는 자식 클래스를 규격화하기 위해 사용함.
public abstract class Animal {
public String kind;
public Animal(String kind){
this.kind = kind;
}
public void breathe(){
System.out.println(this.kind+"가 숨을 쉽니다.");
}
public abstract void sound();
}
public class AnimalEx {
public static void animalSound(Animal animal){
animal.sound();
}
public static void main(String[] args) {
Dog dog = new Dog("멍멍이");
Cat cat = new Cat("냐옹이");
dog.breathe();
dog.sound();
cat.breathe();
cat.sound();
System.out.println("===================");
// Animal animal = new Animal()
// 추상 클래스 타입의 변수를 선언하는 것은 문제가 없음
// 클래스의 형변환
Animal animal;
// animal = new Animal(); //본인은 추상 클래스니까 오류남.
animal = new Dog("멍멍이"); //이건 오류안남
animal.sound();// .sound(); //멍멍이라고 뜸
animal = new Cat("고양이");
animal.sound(); //냐옹
animalSound(new Dog("멍멍이"));
animalSound(new Cat("냐냐옹이"));
}
}
public class Cat extends Animal {
public Cat(String kind) {
// this.kind = "포유류";
super(kind);
}
@Override
public void sound(){
System.out.println("냐옹");
}
}
public class Dog extends Animal {
public Dog(String kind){
// this.kind = "포유류";
super(kind);
// this.kind = kind; super생겨서 필요 없어짐.
}
@Override
public void sound() { //부모꺼를 가져와서(부모꺼는 내용없음) 내용은 본인에게 맞게 수정.
System.out.println("멍멍");
}
}
phone, phoneex, smartphone
public abstract class Phone {
public String owner;
public Phone(String owner){
this.owner = owner;
}
public void turnOn() {
System.out.println("휴대폰 전원을 켭니다.");
}
public void turnOff(){
System.out.println("휴대폰 전원을 끕니다.");
}
}
public class PhoneEx {
public static void main(String[] args){
SmartPhone smartPhone = new SmartPhone("홍길동");
smartPhone.turnOn();
smartPhone.internetSearch();
smartPhone.turnOff();
//Phone 클래스는 추상 클래스이므로 new 키워드를 통해 객체 생성할 수 없음
// Phone phone = new Phone("홍길동") ;
// Phone phone;
// phone = new Phone("홍길동"); //추상클래스니까 직접적인 객체 클래스 생성불가능. 자식에게 상속받아 사용해야 한다.
}
}
public class SmartPhone extends Phone{
public SmartPhone(String owner){
super(owner); //
}
public void internetSearch(){
System.out.println("인터넷 검색을 합니다.");
}
}
parents, child, childEx
chap5
public class Parents {
public void method1(){
System.out.println("Parent - method1()");
}
public void method2(){
System.out.println("Parent - method2()");
}
}
child
public class Child extends Parents{
@Override
public void method2(){
System.out.println("Child-method2()");
}
public void method3(){
System.out.println("Child-method3()");
}
}
childEx
public class ChildEx {
public static void main(String[] args) {
// Child child = new Child();
//
// Parents parents = child;
// parents.method1();
// parents.method2();
Parents parents = new Parents(); //객체 생성
parents.method1(); //parents.method1()
parents.method2(); //parents.method2()
System.out.println("=========");
Child child = new Child();
child.method1(); //child에는 method1이 없음. 그니까 부모것인 parents.method1()이 나옴
child.method2();
child.method3();
System.out.println("=========");
//다형성 : 부모 클래스 타입의 변수에 자식 클래스의 객체를 대입하여 부모 클래스
// 타입의 객체인 것처럼 사용하는 것, 실제 결과물은 자식 클래스 타입의 객체가 가지고 있는 데이터로 출력
parents = child; //껍데기는 parents지만 내용물이 child임. 부모님 젊은 시절 옷을 입음.
parents.method1(); //Parent - method1()
parents.method2(); // Child-method2()
//parents.method3(); // 실행 안됨.
// 부모 클래스 타입의 변수에 자식 클래스 타입의 객체를 대입했을 경우 자동 형변환이 발생하여 자식
// 클래스 타입의 객체가 전용을 가지고 있던 멤버를 활용할 수 없음
// 부모 클래스 멤버만 사용할 수 있음.
}
}
Tire.class, Car2.class, HankookTire.class, KumhoTire.class, Car2Ex.class, Car3.class
public class Tire {
public int maxRotation; //최대 회전수
public int accumulatedRotation; // 누적 회전수
public String location; // 타이어 위치
public Tire(String location,int maxRotation){
this.location = location;
this.maxRotation = maxRotation;
}
public boolean roll(){
++accumulatedRotation;
if(accumulatedRotation < maxRotation){
System.out.println(location + "Tire 수명 : " + (maxRotation -
accumulatedRotation) + "회");
return true;
}
else{
System.out.println("***" + location +"Tire 펑크 ***");
return false;
}
}
}
public class Car2 {
Tire frontLeftTire = new Tire("앞왼쪽",6);
Tire frontRightTire = new Tire("앞오른쪽", 2);
Tire backLeftTire = new Tire("뒤왼쪽",3);
Tire backRightTire = new Tire("뒤오른쪽",4);
int run(){
System.out.println("[자동차가 달립니다.]");
if(frontLeftTire.roll() == false){
stop();
return 1;
}
if(frontRightTire.roll() == false){
stop();
return 2;
}
if (backLeftTire.roll() == false){
stop();
return 3;
}
if(backRightTire.roll() == false){
stop();
return 4;
}
return 0;
}
void stop(){
System.out.println("[자동차가 멈춥니다]");
}
}
public class HankookTire extends Tire{
public HankookTire(String location, int maxRotation){
super(location,maxRotation);
}
@Override
public boolean roll(){
++accumulatedRotation;
if(accumulatedRotation < maxRotation){
System.out.println(location + "HankookTire 수명 : " + (maxRotation-
accumulatedRotation) + "회");
return true;
}
else {
System.out.println("***" + location + "HankookTire 펑크 ***");
return false;
}
}
}
public class KumhoTire extends Tire{
public KumhoTire(String location, int maxRotation){
super(location,maxRotation);
}
@Override
public boolean roll(){
++accumulatedRotation;
if(accumulatedRotation < maxRotation){
System.out.println(location + "HankookTire 수명 : " + (maxRotation-
accumulatedRotation) + "회");
return true;
}
else {
System.out.println("***" + location + "HankookTire 펑크 ***");
return false;
}
}
}
public class Car2Ex {
public static void main(String[] args) {
Car2 car = new Car2();
for (int i=1; i<=5; i++){
int problemLocation = car.run();
switch (problemLocation){
case 1:
System.out.println("앞왼쪽 HankookTire로 교체");
car.frontLeftTire = new HankookTire("앞왼쪽",15);
break;
case 2:
System.out.println("앞오른쪽 KumhoTire로 교체");
car.frontRightTire = new KumhoTire("앞오른쪽",13);
break;
case 3:
System.out.println("뒤왼쪽 HankookTire로 교체");
car.backLeftTire = new HankookTire("뒤왼쪽",14);
break;
case 4:
System.out.println("뒤오른쪽 KumhoTire로 교체");
car.backRightTire = new KumhoTire("뒤오른쪽",17);
break;
}
System.out.println("-------------");
}
System.out.println("\n\n");
Car3 car3 = new Car3();
for(int i =1; i<=5; i++){
int problemLocaton = car3.run(); //1부터 시작했고 다른데서 1을 줬기 때문에 1마이너스함.
if(problemLocaton != 0){
System.out.println(car3.tires[problemLocaton-1].location + "HankookTire로 교체");
car3.tires[problemLocaton -1] = new HankookTire((car3.tires[problemLocaton -1].location),15);
}
System.out.println("============");
}
}
}
public class Car3 {
Tire[] tires = {
new Tire("앞왼쪽",6),
new Tire("앞오른쪽",2),
new Tire("뒤왼쪽",3),
new Tire("뒤오른쪽", 4)
};
int run(){
System.out.println("[자동차가 달립니다.]");
for(int i = 0; i<tires.length; i++){
if(tires[i].roll() == false){
stop();
return (i+1);
}
}
return 0;
}
void stop(){
System.out.println("[자동차가 멈춥니다.]");
}
}
////////////////////////////////////////////////////////////////////////////////