子类都要调用父类的无参构造,如果父类没有无参构造,就要明确的调用父类的有参构造。
子类都要调用父类的无参构造,如果父类没有无参构造,就要明确的调用父类的有参构造。
数据私有化
行为公开化。
如果父类的方法使用了private,那么子类用public 并不能复写该方法,而是等于子类自己定义了一个新的方法而已。
从开发上来说,继承不要超过3层。
如果方法在A类是private的,那么B继承A类之后,可以使用该private的方法吗?
当父类有无参构造的时候,子类可以不用super()
当父类没有无参构造的时候,子类则必须用super()明确调用父类的有参构造。
在子类构造调用前,一定要先执行父类构造,为父类的对象初始化后才轮到子类对象的初始化。
jdk1.7以及以前的版本中,方法中的内部类如果要访问方法的参数以及变量,需要在参数或者变量钱加上“final”标记。
这是最稳妥的做法,因为企业应用中,还没有1.8,而主要是1.7或者1.6
以后看见“类.类.类”的时候一定要知道,这是一个使用了static的内部类。
内部类可以方便的访问外部类的私有属性
外部类也可以访问内部类的属性。
-------------------------------
外部类.内部类 对象=new 外部类().new 内部类()
Outer.Inner in=new Outer().Inner();
in.print();
在非主类中定义, 静态块主要用于static属性初始化。
代码块在代码开发中能不用就不用。
构造块没什么作用
普通代码块
方法里没有属性,可以用static方法。
这样就不用实例化对象才能使用了。
夺
!关注方法的返回值,针对返回值进行方法的操作
!数组本身也是引用数据类型
!数组就是一种相关变量的集合
×构造方法是在设置参数初始化
简单java类中必须保留一个无参构造方法。
数组与方法参数的传递:
二位数组:(了解)
动态初始化:数据类型 数组名称[][]=new 数据类型[行的个数][列的个数]
静态初始化:数据类型 数组名称[][]=new 数据类型[行的个数][列的个数]{{},{}}
数组:
1、数组的基本概念:数组指的是一组相关变量的集合。
2、语法:
@声明并开辟数组:数据类型 数组名称[]=new 数据类型[长度];
数据类型[] 数组名称=new 数据类型[长度];
@分布完成:
|- 声明数组:数组类型 数组名称[]=null;
|-开辟数组:数组名称 =new 数据类型[长度];
访问数组:数组名称[下标|索引]
对象的堆内存保存的是属性;数组中的堆内存保存的是一组信息;
格式一:简化格式:
数据类型 数组名称[]={值,值,............};
格式二:完整格式:
数据类型 数组名称[]=new 数据类型 [] {值,值,............};
第一个代码模型:简单Java类
内容:
开发一个雇员的类,里面包含有雇员编号、姓名、职位、基本工资、佣金。
对于简单Java类的第一种开发要求:
1、类名称必须存在有意义,例如:Book、Emp;
2、类之中所有的属性必须private封装,封装后的属性必须提供setter、getter;
3、类之中可以提供有任意多个构造方法,但是必须保留一个无参构造方法;
4、类之中不允许出现任何的输出语句,所有信息输出必须交给被调用出处调用;
5、类之中需要提供有一个取得对象完整信息的方法,暂定为getInfo,返回String型数据;
//定义一个有意义的类;
class Emp{
private int empno;
private String ename;
private String job;
private double sal;
private double comm;
//无参的构造方法;
public Emp(){}
//有参的构造方法;
public Emp(int eno,String ena,String j,double s,double c){
empno=eno;
ename=ena;
job=j;
sal=s;
comm=c;
}
//setter方法;
public void setEmpno(int e){
empno=e;
}
public void setEname(String e){
ename=e;
}
public void setJob(String j){
job=j;
}
public void setSal(double s){
sal=s;
}
public void setComm(double c){
comm=c;
}
//getter方法:
public int getEmpno(){
return empno;
}
public String getEname(){
return ename;
}
public String getJob(){
return job;
}
public double getSal(){
return sal;
}
public double getComm(){
return comm;
}
//getInfo:
public String getInfo(){
return "雇员编号:"+empno+"\n"+
"雇员姓名:"+ename+"\n"+
"雇员职位:"+job+"\n"+
"基本工资:"+sal+"\n"+
"佣 金:"+comm;
}
}
public class Demo02{
public static void main(String args[]){
Emp e=new Emp(1600091,"宋迪","技术工程师",4000.0,1000.0);
e.setEname("小明");
System.out.println(e.getInfo());
System.out.println("雇员姓名:"+e.getEname());
}
}