Java SE复习总目录
本人情况说明:20年春学过Java语言,了解简单语法,但并不会应用,面向对象的特征及堆栈的概念也并不清楚,希望这个假期可以进行总体的回顾,并通过记博客的方式督促自己,巩固知识,欢迎有相同目标的小伙伴共同交流,一起进步鸭~~
Java面向对象的三大基本特征(封装、继承、多态):本章主要对这三大特征进行简要介绍。
public class Text { public static void main(String[] args) { Person person=new Person();//生成对象,必须在main方法里 } } class Person { //类的属性和方法 }4. return;表示什么也不返回,当程序运行到该语句时,退出该方法,即不再执行该语句后面的语句。
public class Text { int a;//成员变量,可以不赋初值 public void method() { int b = 0;//定义在方法里,是局部变量,必须赋初值 System.out.println(b); } public static void main(String[] args) { Text text=new Text();//main方法需先生成对象,再进行对类的操作 System.out.println(text.a); text.method(); } }
public class Text { int a; public void method() { int b = 0; System.out.println(b); } public static void main(String[] args) { Text text1=new Text(); Text text2=new Text(); text1.a=1;//对象1有其自己的成员变量a=1 text2.a=2;//对象2有其自己的成员变量a=2 System.out.println(text1.a); System.out.println(text2.a); text1.method(); text2.method();//对象1和对象2共用一个方法method,均输出0 } }
1 2 0 011. 引用的类型和对象的类型相同。
Text t=new Text();//t是引用,不是对象,new Text()生成一个对象12. new关键字生成对象时:为对象开辟内存空间→调用类的构造方法→将生成的对象的地址返回。
public class Text { public static void main(String[] args) { Person person1 = new Person(); System.out.println(person1.age);//输出20 Person person2 =person1;//person2和person1指向同一个对象,一个改变也影响另一个。 person2.change(person2); System.out.println(person1.age);//输出18 System.out.println(person2.age);//输出18 } } class Person { int age = 20; public void change(Person person1) { age=18; } }
20 18 18
public class Text { public static void main(String[] args) { Person person1 = new Person(); System.out.println(person1.age);//输出20 Person person3 = new Person();//person3和person1指向不同对象,一个改变不影响另一个。 person3.change(person3); System.out.println(person1.age);//输出20 System.out.println(person3.age);//输出18 } } class Person { int age = 20; public void change(Person person1) { age=18; } }
20 20 18
class A { public A() { //可手动编写,默认为空 } } class A //未定义构造方法的类,默认为空,同上,不可见 { }15. 调用构造方法传递参数,形参表示又创建了一个指向该对象的新引用。
public class Text { public static void main(String[] args) { Person zhangsan = new Person(); zhangsan.change(); System.out.println("----------------------"); zhangsan.change(20); } } class Person { public void change(){ } public int change(int age){ System.out.println(age); return age; } }
---------------------- 2017. 构造方法的重载:只需看参数即可,若想在一个构造方法中调用另一个构造方法,使用this(),他必须作为该构造方法的第一条语句。
public class Text { public static void main(String[] args) { Person zhangsan = new Person(); Person lisi = new Person(20); } } class Person { public Person() { System.out.println("无参构造"); } public Person(int age) { System.out.println("有参构造"); } }
无参构造 有参构造
public class Text { public static void main(String[] args) { Person zhangsan = new Person(); } } class Person { public Person() { this(20); System.out.println();//一个构造方法使用this调用重载的另一个构造方法,注意this语句要放在第一位 } public Person(int age) { System.out.println("年龄为"+age); } }
年龄为20
public class Text { public static void main(String[] args) { Rose rose = new Rose(); } } class Flower { public Flower(){ System.out.println("这里有一朵花"); } } class Rose extends Flower { public Rose(){ System.out.println("这里有一朵玫瑰花"); } }
这里有一朵花 这里有一朵玫瑰花
public class Text { public static void main(String[] args) { Rose rose = new Rose(); } } class Flower { public Flower(){ System.out.println("这里有一朵花"); } public Flower(int size){ System.out.println("这里有一朵直径为5cm的花"); } } class Rose extends Flower { public Rose(){ super(5); System.out.println("这里有一朵玫瑰花"); } }
这里有一朵直径为5cm的花 这里有一朵玫瑰花21. 方法和属性可以被继承,构造方法不能被继承(子类仅仅执行但并不继承,它有自己的构造方法)。
public class Text { public static void main(String[] args) { Rose rose = new Rose(); rose.size(); } } class Flower { public void size(){ System.out.println(6); } } class Rose extends Flower { public void size(){ super.size(); System.out.println(4); } }
6 424. 注意区分方法重载和方法重写,重载指类中同名的两方法,根据参数的不同,编译器自动进行调用;重载是子类对父类方法的改写。
Flower rose1 = new Rose(); Rose rose = (Rose) rose1;28. 多态的应用:同一父类下的多个子类实现一个功能时,只用父类中的一个方法即可完成,注意该方法的参数为父类。
class Car { public void run (Car car) { car.run(); } } //之后可定义多种类表示各种具体汽车,再在这些类下实现(重写)各车独有的run方法