13일째 (봉인 구조 함수)

13203 단어 JAVA 공부제1단계
1、chap5 중 6-14문제, 15문제 선택
6>
(구조 함수)는 다음과 같은 코드가 있다.
 class MyClass{
int value;
}
public class TestMyClass{
public static void main(String args[]){ MyClass mc1 = new MyClass(); MyClass mc2 = new MyClass(10); System.out.println(mc1.value); System.out.println(mc2.value);
}
}
물음: 이 프로그램은 컴파일하여 통과할 수 있습니까?가능하다면, 출력 결과는 무엇입니까?만약 안 된다면 어떻게 수정해야 합니까?
컴파일링이 통과하지 않습니다. 수정 방법은 두 가지입니다.
   1
) 기본 메서드를 수정하지 않음:
MyClass
클래스에 두 가지 구조 방법을 추가하고,
         
하나는 무참구조 방법:
public MyClass(){}
      
하나는 있어요.
int
유형 매개변수의 구성 방법:
public MyClass(int x){}
   2
) 수정 안 함
MyClass
클래스: 기본 방법에서 삭제
“MyClassmc2 = new MyClass(10);”

“System.out.println(mc2.value);”
7>(대상의 기초를 향해) 주석에 따라 아래 코드를 완전하게 보충
//Dog 클래스 class Dog 정의
//String 유형인 name 속성 정의
______________________;//age 속성을 정의합니다. 이 속성은 int 형식입니다.
______________________;//sexual 속성을 정의합니다. 이 속성은boolean 형식/true로 공이고 false는 모입니다.
______________________; public Dog(){}
public Dog(String name, int age, boolean sexual){
//매개 변수에 따라 Dog 클래스의 속성 설정
}
public void play(){ System.out.println(name + “play”);
}
public void play(int n){
System.out.println(name + “play ” + n + “minutes”);
}
}
public class TestDog{
public static void main(String args[]) {Dog d;//매개 변수가 있는 구조 함수를 사용하는 Dog 객체 만들기
//이름은 조이, 나이는 2세, 성별은 어머니
_________________;//Dog 객체에 대한 참조가 없는 play 메서드를 호출합니다.
_________________;//Dog 객체에 참조가 있는 play 메서드를 호출합니다. 매개변수는 30입니다.
_________________;
}
}
class Dog{
        public String name;//    name   ,    String   
        public int age;//    age   ,    int   
        //    sexual   ,    boolean   ,true     ,false     
        public boolean sexual;
        public Dog(){}
        public Dog(String name, int age, boolean sexual){
                this.name = name;
                this.age = age;
                this.sexual = sexual;
        }
        public void play(){ 
                System.out.println(name + "play");
        }
        public void play(int n){
                System.out.println(name + "play" + n + "minutes");
        }
}
 
public class TestDog{
        public static void main(String args[]){
                /**
                 *     Dog   ,          
                 *    joy,   2  ,    
                 */
                Dog d = new Dog("joy",2,false); 
                d.play(); //  Dog      play   。
                d.play(10); //  Dog      play   ,   30
        }
}

8>(객체 작성 프로세스)에는 다음 코드가 있습니다. class ClassA{
public ClassA(){ System.out.println("ClassA()");
}
}
class ClassB{ public ClassB(){
System.out.println("ClassB()");
}
}
class ClassC{
ClassA a = new ClassA(); ClassB b;
public ClassC(){ System.out.println("ClassC()"); b = new ClassB();
}
}
public class TestConstructor{
public static void main(String args[]){ ClassC cc = new ClassC();
}
}
정답을 선택하십시오.
A. 컴파일 실패
B. 
출력
ClassA() ClassB() ClassC()
C. 
출력
 ClassA() ClassC() ClassB()
D. 
출력
 ClassC() ClassB() ClassA()
정답: C
9>(인용, 방법 매개 변수 전달)에는 다음과 같은 코드가 있다.
class ClassA{
int value;
}
public class TestClassA{
public static void main(String args[]){ int value = 10;
changeInt(value);
System.out.println(value); ClassA ca = new ClassA(); ca.value = 10; changeObject(ca); System.out.println(ca.value);
}
public static void changeInt(int value){ value++;
}
public static void changeObject(ClassA ca){ ca.value++;
}
}
컴파일 실행
TestClassA 의 결과
A. 컴파일 오류
B. 
출력
 10 10
C. 
출력
 10 11
D. 
출력
 11 11
정답: C
10*(구조 함수,this 키워드) 프로그램 오류 수정
public class Student{
public void Student(){} void init(){
age = 10; name = "limy";
}
public Student(String name){
this.init();
this.name = name;
}
public Student(String name, int age){ this.init();
this(name); this.age = age;
}
int age; String name;
}
public class Student {
        int age;
        String name;
        public Student() {}//          
 
        void init() {
                age = 10;
                name = "limy";
        }
 
        public Student(String name) {
                this.init();
                this.name = name;
        }
 
        public Student(String name, int age) {
                this(name);//this       
                this.init();
                this.age = age;
        }
}

11>(객체 기반용) Worker 클래스를 작성하고 여러 Worker 객체를 작성합니다.
1) Worker 클래스에 세 가지 속성을 추가합니다. 1) String 유형의name은 노동자의 이름을 나타냅니다.2) int 타입의age는 노동자의 나이를 나타낸다.3) 더블타입의 샐러리, 일꾼
월급
2) 워커류에 두 가지 구조방법을 추가하고, 1) 무참구조방법을 공개한다.2) 세 개의 매개 변수의 구조 방법을 받아들인다. 세 개의 매개 변수는 각각 문자열, int, 더블 형식이다.
3) Worker 클래스에 두 개의work 방법을 추가합니다. 하나는 참조가 없고 다른 하나는 정수 파라미터를 가지고 있으며 노동자가 일하는 시간(몇 시간)을 나타냅니다.
public class Worker{
        public String name;//  
        public int age;//  
        public double salary;//  
         
        public Worker() {}//      
 
        public Worker(String name, int age, double salary) {
                this.name = name;
                this.age = age;
                this.salary = salary;
        }
         
        public void work(){
                System.out.println("     work  ");
        }
         
        public void work(int time){
                System.out.println("         work  ");
        }
         
        public static void main(String[] args) {
                 
        }
}

12>(객체 기반용) 다음과 같은 Address 클래스를 만듭니다.
1) 이 클래스는 두 가지 속성이 있는데 1) String 유형의address로 주소를 표시한다.2) 우편번호를 나타내는 스트링 유형의 zipCode
2) 이 유형은 두 가지 구조 방법이 있는데 하나는 무참 구조 방법이고 하나는 두 개의 파라미터를 가진 방법이다.클래스는 다음과 같습니다.
public class Address{
        public String address;//  
        public String zipCode;//  
 
        public Address() {}//      
 
        public Address(String address, String zipCode) {
                this.address = address;
                this.zipCode = zipCode;
        }
 
        public static void main(String[] args) {
                 
        }
}

13>* (객체 기반) 첫 번째 문제의 Worker 클래스에 Address 유형인 속성addr를 추가합니다.
워커 대상을 만들었는데 그 이름은'zhangsan'이고 나이는 25세이며 월급은 2500원이며 가정 주소는'북경시 해전구 청화원1호'이고 우편번호는 100084이다.
public class Worker {
 
        public String name;//  
        public int age;//  
        public double salary;//  
        public Address addr;//  
         
        public Worker() {}//      
 
        public Worker(String name, int age, double salary) {
                this.name = name;
                this.age = age;
                this.salary = salary;
        }
         
        public Worker(String name, int age, double salary, Address addr) {
                super();
                this.name = name;
                this.age = age;
                this.salary = salary;
                this.addr = addr;
        }
 
        public void work(){
                System.out.println("     work  ");
        }
         
        public void work(int time){
                System.out.println("         work  ");
        }
 
        @Override
        public String toString() {
                //  :addr.toString()   Address   toString()  
return "Worker [name=" + name + ", age=" + age + ", salary=" + salary + ", " + addr.toString() + "]";
        }
 
        public static void main(String[] args) {
                Worker worker = new Worker("zhangsan",25,2500,
new Address("         1  ", "100084"));
                System.out.println(worker.toString());
        }
}

14>**(인용, 방법 매개 변수 전달)에는 다음과 같은 코드가 있다.
class ClassA{
int value;
}
public class ChangeRef{
public static void main(String args[]){ ClassA ca = new ClassA(); changeValue(ca); System.out.println(ca.value); changeRef(ca); System.out.println(ca.value);
}
public static void changeValue(ClassA ca){
ca.value = 100;
}
public static void changeRef(ClassA ca){
ca = new ClassA();
ca.value = 200;
}
}
ChangeRef를 컴파일한 결과
A. 컴파일 실패
B. 
출력 100 200
C. 
출력 100 100
D. 
출력 0 200
C
대상에 대한 이해와 예를 들어eg: 학생류를 만들고 학습, 달리기 관련 방법의 이름, 성별, 나이 관련 속성 요구가 있다. 1. 봉인 방식을 통해 학생 정보의 출력을 실현한다. 2. 봉인된 장점을 요약한다.
public class Student {
 
    private String name;//  
    private String sex;//  
    private int age;//  
     
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
     
    public String study(){
        return "   Java  。";
    }
     
    public String play(){
        return "        。";
    }
     
    public static void main(String[] args) {
        Student s = new Student();
        s.setName("Jack");
        s.setSex("Man");
        s.setAge(20);
        System.out.println(s.getName()+"\t"+s.getSex()+"\t"+s.getAge()+
"\t"+s.study()+"\t"+s.play());
    }
}
2)     
   1、     
    2、    
    3、     
4、     

3. 구성원 변수와 국부 변수의 차이를 상세히 적는다
구성원 변수와 로컬 변수의 차이점:
구성원 변수:
① 구성원 변수는 클래스에 정의되어 있으며 전체 클래스에 접근할 수 있다.
② 구성원 변수는 대상이 구축됨에 따라 만들어지고 대상이 사라짐에 따라 사라지며 대상이 있는 메모리에 존재한다.
③ 구성원 변수에는 기본 초기화 값이 있습니다.
로컬 변수:
① 국부 변수는 국부 범위, 예를 들어 함수 내, 문장 내 등만 정의하고 소속 구역에서만 유효하다.
② 부분적인 변수는 창고 메모리에 존재하며 작용의 범위가 끝나면 변수 공간은 자동으로 방출된다.

국부 변수에 기본 초기화 값이 없습니다
4. 구조 함수와 일반 함수의 차이를 열거
일반 함수와 구조 함수의 차이점:
1
일반 함수는 주로 기능의 독립 코드 세그먼트를 정의하는 데 쓰인다
   
구조 함수는 주로 대상을 초기화하는 데 쓰인다
2
, 일반 함수에 반환값 형식이 있습니다.void를 사용하지 않으면
대신
   
구조 함수에 반환값 형식이 없습니다
수식부
클래스 이름(매개변수 목록) {}
3
, 일반 함수 여러 번 호출 가능
   
구조 함수는 대상을 초기화할 때만 호출하고 한 번만 호출하면 된다
4
일반 함수는 귀속을 실현할 수 있다
   
구조 함수는 귀속에 사용할 수 없다
5
일반 함수 주 함수 호출
구조 함수
jvm
호출
5.this 키워드의 특징과 세 가지 응용 장면, 예를 들어 설명
public class Demo05 {
 
        private String name;
        private String password;
 
        public Demo05(String name, String password) {
                this();// 2、    ,             
                this.name = name;
                this.password = password;
        }
 
        public Demo05(String name) {
                this.name = name;// 1、             
        }
 
        public Demo05() {
 
        }
 
        public void study() {
                System.out.println("study");
        }
 
        public void run() {
                study();// 3、            ,   this      
                System.out.println("run");
        }
}

6. (선택) 수요: 자바를 사용하여 인간을 정의하고 사람은 id,name,age 세 가지 속성을 갖추고
나이를 비교하는 방법도 있다.
요구: 구조 함수를 써야 하고 구조 함수도this 키워드를 사용해야 합니다.
public class Person {
        private int id;
        private int age;
        private String name;
         
        public Person() {}
         
        public Person(int id) {
                this.id = id;
        }
 
        public Person(int id, int age) {
                this(id);
                this.age = age;
        }
 
        public Person(int id, int age, String name) {
                this(id,age);
                this.name = name;
                 
        }
 
        public int getId() {
                return id;
        }
 
        public void setId(int id) {
                this.id = id;
        }
 
        public int getAge() {
                return age;
        }
 
        public void setAge(int age) {
                this.age = age;
        }
 
        public String getName() {
                return name;
        }
 
        public void setName(String name) {
                this.name = name;
        }
 
        public void getAge(Person p1, Person p2){
                if(("".equals(p1.getName().trim()) || p1.getName()==null) || ("".equals(p2.getName().trim()) || p2.getName()==null)){
                        System.out.println("      !");
                }
                else{
                        if(p1.getAge()>p2.getAge()){
                                System.out.println(p1.getName()+"      !");
                        }
                        else if(p1.getAge()==p2.getAge()){
                                System.out.println("    !");
                        }
                        else{
                                System.out.println(p2.getName()+"      !");
                        }
                }
        }
}

좋은 웹페이지 즐겨찾기