13일째 (봉인 구조 함수)
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()+" !");
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 대상별 연습문제--애완동물 상점제목: 애완동물 상점을 실현하고 상점에 다양한 (사용자 수에 의해 확정된) 애완동물이 있다. 이러한 관계를 표시하고 애완동물의 키워드에 따라 해당하는 애완동물 정보를 찾을 수 있도록 요구한다.필요한 애완동물 정보는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.