3)super():表示调用父类的构造方法,注意:super()必须是子类构造方法中第一条语句
子类中构造方法默认第一条语句会调用父类的无参数构造方法super(),也可以手动调用父类中带参数的构造方法
this和super的区别:
(1) this表示当前对象的引用,super表示当前父类对象的引用
(2) this.属性可以调用当前对象的属性包括继承的属性,super.属性可以调用父类的属性
(3) this.方法() 可以调用当前对象的方法包括继承的方法,super.方法()可以调用父类的方法
(4) this(参数) 调用本类中其他的构造方法,super(参数) 调用父类的构造方法
(5) this(参数)和super(参数)只能用在构造方法中,必须是第一条语句,只能调用一次,不能同时使用。
第六节:包和访问权限 为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,Java引入了包(package)。
在使用许多类时,类和方法的名称很难决定。有时需要使用与其他类相同的名称。包基本上隐藏了类并避免了名称上的冲突。
用package来声明包,package语句必须是java源文件中的第一条语句。(若无这条语句,则放置在无名包下)
在package语句中,用"."来指明包(目录)的层次。包对应着文件系统的目录层次结构。
一般使用公司或组织的域名的倒置+项目名或模块名来表示包名。
包名 com.baidu.oa
包名 com.alibaba.pay
6.1 创建包 package com.qf.test; public class Employee { private String name; //姓名 private int age; //年龄 private double salary; //薪水 public Employee(){ } public Employee(String name, int age, double salary){ //构造方法 this.name = name; this.age = age; this.salary = salary; } //getter和setter省略 } 6.2 导入包为使用定义在不同包中的Java类,需要import语句来引入所需要的类。
语法格式:
import package1[.package2…].类名
import com.qf.test.Employee; public class PackageDemo { public static void main(String args[]){ Employee employee = new Employee(); } }注意:
要导入某个包中的所有类可以用:包名.*
例如:import java.util.*;
在同一包中的类可以直接互相引用,无需import语句。
6.2 访问权限 权限\使用范围 本类 同包中类或同包子类 不同包子类 不同包类public v v v v
protected v v v x
默认[default] v v x x
private v x x x
package a; public class Person{ public String name; protected int age; char sex; private double sal; public Person(){} public Person(String name, int age, char sex, double sal){ this.name = name; this.age = age; this.sex = sex; this.sal = sal; } public static void main(String[]args){ Person p = new Person("张三", 12, 'm', 5000); System.out.println(p.name); System.out.println(p.age); System.out.println(p.sex); System.out.println(p.sal); } } package a; public class Student extends Person{ public static void main(String[]args){ Person p = new Person("张三", 12, 'm', 5000); System.out.println(p.name); System.out.println(p.age); System.out.println(p.sex); //System.out.println(p.sal);//同包子类中无法访问父类中私有成员 } } package a; public class Demo{ public static void main(String[]args){ Person p = new Person("张三", 12, 'm', 5000); System.out.println(p.name); System.out.println(p.age); System.out.println(p.sex); //System.out.println(p.sal);//同包类中无法访问父类中私有成员 } } package b; public class Student extends Person{ public static void main(String[]args){ Person p = new Person("张三", 12, 'm', 5000); System.out.println(p.name); System.out.println(p.age); //System.out.println(p.sex);//不同包中子类中无法访问默认权限成员 //System.out.println(p.sal); } } package b; public class Demo{ public static void main(String[]args){ Person p = new Person("张三", 12, 'm', 5000); System.out.println(p.name); //System.out.println(p.age);//不同包中不能访问受保护属性 //System.out.println(p.sex); //System.out.println(p.sal);//不同包类中无法访问父类中私有成员 } }
使用原则:
修饰类时:只能public 或 默认的
修饰成员变量和方法:可以使用public 、默认、protected 、private
局部变量不能访问权限修饰符。
第七节:方法重写方法重载(overload):
1 同一个类中,方法名相同,参数列表不同(个数不同,类型不同,顺序不同)