------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、继承
继承关系:两个类之间是is-a的关系。
例如:动物类、狗类。员工类和经理类。父亲和儿子的关系。
继承的特点:子类继承了父类的所有属性和方法,并且可以为自己增添新的属性和方法。Java只支持单继承。
继承的的优点:提高代码的可重用性。(父类中属性和方法的重用性)。
通过关键字extends来实现继承。
示例代码:
class Employee {//员工类 private String name; // 姓名 private int age; // 年龄 private double salary = 2000.0; // 薪水 public Employee(String name, int age, double salary) { this.name = name; this.age = age; this.salary = salary; } public Employee() { } public double getSalary() { return salary; } } class Manager extends Employee {//经理类继承员工类 private double bonus; // 奖金 public void setBonus(double bonus) { this.bonus = bonus; } } public class TestInheritance { public static void main(String[] args) { Manager manager = new Manager(); double sal = manager.getSalary(); System.out.println("经理的奖金为" + sal); } }
二、Super关键字
显示调用父类的构造方法
显示调用父类的普通方法
示例代码:
class Employee1 { private String name; // 姓名 private int age; // 年龄 private double salary = 2000.0; // 薪水 public Employee1(String name, int age, double salary) { this.name = name; this.age = age; this.salary = salary; } public Employee1() { } public double getSalary() { return salary; } public void displayInfo(){ System.out.println("name=" + name + ",age=" + age); } } public class Manager1 extends Employee1 { private double bonus; // 奖金 private String position; // 职位 public Manager1(String name, int age, double salary, String position) { super(name, age, salary); // 子类的构造方法中,通过super关键字调用父类的显示有参构造方法, // 写在第一句, 通过调用父类的构造方法,完成对属性值的初始化 this.position = position; } public void setBonus(double bonus) { this.bonus = bonus; } }
三、访问修饰符
用来修饰类、方法、成员变量。
Public公有的
Private私有的
Protected受保护的,对本类、所有子类和本包可见
示例代码:
class T { private int i = 10;//私有的 int j = 100;//默认的 protected int k = 1000;//受保护的 public int m = 100000;//共有的 } public class TestAccess{ public static void main(String [] args) { T t = new T(); //System.out.println(t.i);私有的不能访问 System.out.println(t.j); System.out.println(t.k); System.out.println(t.m); } }
四、方法重写(Override)
发生在子父类之间的两个方法
具有相同的方法名称、参数列表和返回值类型,访问范围不能被缩小。
为什么需要重写:对父类的某个方法的实现不满意或不能满足你的需求的使用。
方法重载和方法重写的区别
重载是发生在同一个类中的多个方法,重写是发生在子父类之间。
重载要求:方法名相同,参数列表一定要不相同。
重写要求:方法名相同,参数列表要相同,返回值类型也要相同。
五、object类
它是javase api中提供的一个类:全名叫java.Lang.ojbect。
所有java类的根类
如果一个类维明确使用extends关键字指定父类,则默认为继承资object类。
Object类的几个重要方法:tostring()、equals(object obj)、hashcoda()
示例代码:
public class TestObject{ public static void main(String[] args){ TestObject obj = new TestObject(); System.out.println(obj.toString());//打印对象字符串 System.out.println(obj.hashCode());//打印对象的hash码 System.out.println(obj.getClass());//显示obj对象对应的class对象的类名 TestObject obj2 = new TestObject(); System.out.println(obj.equals(obj2)); //比较两个对象是否相等。 } }
六、final关键字
修饰类、方法、成员变量、局部变量、方法参数
Final修饰类时,这个类不能被子类继承。
Final修饰方法时,这个类不能被子类继承。
Final修饰成员变量时,这个变量只能赋一次值,以后就不能更改它的值了。相当于常量。
Final修饰局部变量是,这个参数类型是基本数据类型,这个参数的值不能被改变,如果参数类型是引用类型,这个参数不能指向其他的对象。
示例代码:
public class FinalDemo { public static void main(String args[]){ final int noChange = 20; //由于只能赋值一次所以赋值后就跟常量一样 // noChange = 30; } }