1、继承:
extends
2、限定访问权限的修饰符:private(同一个类中),default(同一个包中),protected(不同包的子类中),public(全局);
3、覆盖方法(override):
方法重写要使用相同的名字及参数、返回值;不能用比父类更加严格的访问权限;不能抛出更多异常(throw exception);
4、super关键字:
父类也叫超类,子类也叫派生类;子类中调用父类的方法或属性时使用super关键字;
新建子类对象时,子类构造器中隐式包含父类构造器,所以父类的构造器会先被调用;
public Student(){
super();//显式调用父类构造器
System.out.print("student");
}
5、方法重载(overload):
方法重载:同一个类中方法名相同,但参数必须不同;
6、构造器重载:
构造器重载时,相互调用时使用This关键字;
public class Person {
public Person(){
this(1);
}
public Person(int i){
this("fine");
System.out.print(i);
}
public Person(String a){
System.out.print(a);
}
}
7、游离块:
游离块比构造器更先被调用;游离块定义方法如下:
{
语句;
}
8、封装类:
java给八个基本数据类型封装了八个类,叫做封装类;例如:
Integer i = new Integer(0); <=> int i = 0;
上述两个语句等价;
Integer a = new Integer(1);
Integer b = new Integer(2);
system.out.print(a == b);返回值为假;因为a、b为地址;
system.out.print(a.equals(b));返回值为真;
9、装箱、拆箱:
装箱:将简单数据类型自动转换成对应封装类型;
拆箱:将封装类型自动转换成对应简单类型;
10、toString()方法:
Integer a = new Integer(1);
Student student = new Student("tom");
system.out.print(a);打印出来是1;
system.out.print(student);打印出来是地址;
当对Student类重写toString方法为如下时:
public String toString(String name){
System.our.print(name);
}
上面的例子打印出来就为tom;
11、static 关键字:
当变量添加了static关键字时,不管有几个对象,则该变量在内存中只有一份,改变某个对象中的该变量的值,在另一个对象中该变量的值也会跟着改变;
例:报价程序
厂家希望控制市场上产品的销售价格,但有若该个经销商,当其中一个经销商给便商品价格时,别的经销商的价格也会跟着改变,而不会在市场上出现若干种价格版本;
类1:
public class Student{
private static Student student; 将student私有;
private Student(){}
public static Student getStudent(){
if (student == null){
return student = new Student();
}
return student;
}
}
类2:
public void main(){
Student student1 = Student.getStudent();
Student student2 = Student.getStudent();
system.out.print(student1 == student2); //打印结果为true;因为他们的地址相同
}
12、设计模式(面向对象中的行/黑话):
面向对象中23中经常碰到的问题及其解决方案的总结;
singleton(单子/单例设计模式):一个类只能产生一个模式;
模板设计模式:
13、final关键字:
用于修饰类、方法、变量
final类 -- 不可被继承
final变量 -- 在初始化后不可改变,用于常量定义
final方法 -- 不可被覆盖
14、接口(interface):
命名时一般用I开头:
//接口
public interface IPerson{
public void sleep();//接口文件中只有方法类型的定义
}
//新建一个Student类
public class Student implements IPerson{
public void sleep(){ //实现接口中定义的方法
system.out.print("student");
}
}
//新建一个PersonFactory类
public class PersonFactory {
public static IPerson getPerson(int a) {
if (a==1) {
return new Student();
}
if(a==2){
return new Teacher();
}
return null;
}
}
//新建一个Teacher类
public class Teacher implements IPerson{
public void sleep(){ //实现接口中定义的方法
system.out.print("teacher");
}
}
//
public class Test{
public void main(){
IPerson test = new Teacher;
test.sleep(); //打印结果为teacher
IPerson test1 = new Student;
test1.sleep(); //打印结果为student
//下述方法耦合度更加低,在大型代码中应用非常广
IPerson test2 = PersonFactory.getPerson(1);
test2.sleep();//打印结果为student
IPerson test3 = PersonFactory.getPerson(2);
test3.sleep();//打印结果为teacher
}
}
15、abstract关键字
抽象类中可以有一部分方法可以不实现,但是必须用abstract修饰;
接口(任何方法都没有实现)是对类得抽象,类(全部方法都有实现)是对对象的抽象,抽象类(部分方法有实现)是介于接口与类之间的
public abstract class xxx{};//抽象类
16、多态
举例说明:
Person x = new Student();
x.showname();//调用sutdent中的方法;
17、虚方法
18、内部类
在一个类中另起一个类;
必备书籍:
应用类:linux程序设计(第四版)、驱动类:linux驱动程序设计(印度);内核类:linux内核设计与实现(英文版);
阅读(1592) | 评论(0) | 转发(1) |