Override
@Override를 붙이면
컴파일러가 오버라이딩 규칙에 알맞게 메소드를 구성하였는지 체크한다.
부모 클래스에 기본 생성자가 없을 때
자식클래스 생성자에서는 묵시적으로 컴파일러가 super()를 호출한다.
따라서 부모클래스에는 기본생성자가 존재해야 한다.
해결하려면 기본생성자를 만들어주던지 super(인자)를 명시적으로 호출해야한다.
1) super( )는 생성자 안에서만 호출 가능
2) 생성자 안의 첫번째 문장이어야 함
3) this( )와는 함께 사용 불가
4) static 문구에서도 사용 불가
public Superman(String name, int height, int power) {
super(name,height);
this.power =power;
}
instanceof 연산자
- 참조변수 instanceof 클래스명 :
참조변수가 클래스유형의 객체이면 true를 반환하고 그렇지 않으면 false를 반환한다.
Human hrr[] = {h1,a1,hs,as};
for(Human c: hrr) {
c.showInfo();
if(c instanceof Aquaman) {
((Aquaman)c).showInfo("--수중인간--");
}else {
c.showInfo();
}
}
GUI실습2
모르는 객체들은 API에서 찾아서 생성자와 변수들을 확인하고 만들면 된다.
package day14;
import java.awt.*;
public class MyGui2 extends Frame{
Checkbox c1,c2,c3;
Checkbox cm,cf;
Choice ch;
List lst1,lst2;
Panel p;
public MyGui2() {
super(":::MyGui2:::"); //윈도우창의 타이틀에 문자열이 올라감
p=new Panel();
add(p);
p.setBackground(Color.LIGHT_GRAY);
c1=new Checkbox("취미");
c2=new Checkbox("취미",true);
c3=new Checkbox("취미",false);
p.add(c1);
p.add(c2);
p.add(c3);
CheckboxGroup cbg = new CheckboxGroup();
cm=new Checkbox("남자",cbg,true);
cf=new Checkbox("여자",cbg,false);
p.add(cm);
p.add(cf);
ch=new Choice();
p.add(ch);
ch.add("010");
ch.add("011");
ch.add("012");
lst1=new List(3,true);
String []langs= {"C","C++","Java","SQL","JSP"};
for(String ll:langs) {
lst1.add(ll);
}
p.add(lst1);
}
public static void main(String[] args) {
//Frame은 반드시 사이즈를 주고 setVisible(true)해주어야 함
MyGui2 my= new MyGui2();
my.setSize(500,500);
my.setVisible(true);
}
}
Component (부품: Button, List, ,,,,)
+------------Container (담아주는 플랫폼 같은 역할)
+-------------Window [BorderLayout이 기본]
+---------------Frame
+---------------Dialog-------FieldDialog
+-------------Panel [FlowLayout이 기본]
+---------Applet
LayoutManager (배치 관리자)
1) FlowLayout : Panel계열의 디폴트 레이아웃
2) BorderLayout : Window계열의 디폴트 레이아웃
3) GridLayout
4) GridBagLayout
....
package day14;
import java.awt.*;
//Frame의 기본 Layout은 Border Layout(동,서,남,북,중앙의 영역을 지정하여 배치)
public class MyFlow extends Frame{
Button b1,b2,b3,b4,b5;
public MyFlow() {
super(":::MyFlow:::");
//레이아웃 설정
FlowLayout fl=new FlowLayout(FlowLayout.RIGHT);
setLayout(fl);
b1=new Button("b1");
b2=new Button("b2");
b3=new Button("b3");
b4=new Button("b4");
b5=new Button("b5");
add(b1);
add(b2);
add(b3);
add(b4);
add(b5);
}
public static void main(String[] args) {
MyFlow my =new MyFlow();
my.setSize(500,500);
my.setVisible(true);
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
SQL 실습(Foreign Key)
--day01.sql
select * from student;
insert into student
values(8,'김최고','서울','0102121',sysdate,'자바반',301);
commit;
--2번 김남우 학생의 학급 자바반 주소 데이터를 수정 update 하세요
update student set addr='서울',cname='네트워크반',room=201
where no=2;
commit;
select * from student
where cname='자바반';
select * from student
where cname='네트워크반';
drop table student;
--학생이 학급에 소속되어있다.
--학급 테이블(부모 테이블)
create table SCLASS(
SNO number(4) PRIMARY KEY, --학급코드
cname varchar2(50) not null,--학급명
room number(3)--교실번호
);
--학생 테이블(자식 테이블)
create table student(
NO number(4) PRIMARY KEY, --학번
name varchar2(30) not null, --이름
TEL varchar2(20) not null, --연락처
ADDR varchar2(100),
INDATE DATE DEFAULT SYSDATE,
SNO_FK number(4) REFERENCES SCLASS (SNO) --학급코드(외래키 : FOREIGN KEY)
);
desc student
insert into sclass
values(30,'웹디자인반',401);
commit;
select * from sclass;
--자바반 3명 네트워크반 2명 웹디자인반 2명
insert into student
values(7,'마학생','010-9212-2452','서울시 노원구',sysdate,30);
commit;
select * from student;
select * from student
order by no asc;
select * from student
order by indate desc, no asc;
--학급 테이블과 학생 테으블을 JOIN하여 출력해보자
select sno,cname,no,name,tel,indate,room
from sclass join student
on sclass.sno = student.sno_fk;
--자바반의 교실이 101호로 변경
update sclass set room=101
where cname='자바반';
commit;
--등록한 학생수
select count(*) from student
where sno_fk=10;
--20반 학생 지우기
delete from student
where sno_fk =20;
delete from sclass
where sno=20;
commit;
모든 클래스에는
toString 메소드가 있다 그래서 그냥 생성하고 실행하면 주소값을 출력한다.
하지만 toString을 재정의 한다면 다른 값을 출력하게 할 수 있다.
'개발자 > 국비지원 SW' 카테고리의 다른 글
국비지원 16일차 - 추상클래스, JFrame, SQL (연산자, LIKE) (0) | 2020.05.06 |
---|---|
국비지원 15일차 - 패키지, 접근 지정자, 패키징, BorderLayout, GridLayout, Panel상속, SQL, NULL은 0 (0) | 2020.05.04 |
국비지원 13일차 - 상속, 오버라이딩, super, 다형성, GUI(awt), SQL문(DDL, DML, DQL) (2) | 2020.04.28 |
국비지원 12일차 - 다형성(오버로딩), 생성자, this(), OracleSQL, SQLDeveloper (0) | 2020.04.27 |
국비지원 11일차 - 캡슐화, UML, 명렬줄 인수, 시맨틱 태그 (0) | 2020.04.24 |