面对对象基础概念

来源:互联网 发布:数据采集卡ni 编辑:程序博客网 时间:2024/05/08 04:37

                           面对对象基础概念

 %%java三大特性:封装型、继承性、多态性

1.构造器/构造函数

定义:任何一个类都会有一个默认的构造函数,用于构造一个实例

格式:public 类名(){}                   

注意:堆空间中的对象如果没有变量引用,则由Java虚拟机的垃圾清理机制帮我们做清理工作

作用:1)创建对象

      2)初始化对象的属性

例1:public class A(){}   //A类里存在一个默认的构造函数

     注:对于变量、类等都不同情况都可能存在的相应的默认值,没写不代表没有!!!

2public class  A(){

 public void play{    //A类中定义了play函数

System.out.println("A");

}

}

例题:public class Test {

  public static void main(String[] args) {

Teacher tea1 ;    //不会调用构造器,只是声明了一个变量是Teacher类型

tea1= new Teacher("张三");//new Teacher("张三")语句才会调用构造器

Teacher tea2 = new Teacher();

tea1.name = "张三";

tea2.name = "李四";

tea1 = tea2;  //tea2所指向的初始化对象地址改变为指向tea1对象的堆地址

tea1.name = "王五";

System.out.println(tea1.name);

     System.out.println(tea2.name);

}

}   

运行结果:王五

          王五

注:创建对象存入内存,其中将对象名存入栈,其中对象名指向对应的堆中初始化对象的地址;

 

2.方法重载

定义:在同一个类中,多个方法的方法名相同,参数列表(参数个数、顺序、类型)不同的方法互为重载方法

普通方法重载和构造方法重载

构造方法重载:1.如果构造方法被重载了,默认无参的构造方法则不存在了

      2.构造方法重载作用,用于初始化属性

例3public class Teacher {

  public Teacher(String n){

name = n;

}

  public Teacher(){}

  public String name;

      //根据调用构造函数的参数列表的不同调用不同的构造函数

  public void study(int a){       

System.out.println("学习1");

}

  public void study(String a){

System.out.println("学习2");

}

  public void study(String a,String b){

System.out.println("学习3");

}

  public void study(String a,int b){

System.out.println("学习4");

}

  public void study(int a,String b){

System.out.println("学习5");

}

}

3.继承

定义:子类继承父类的相关属性和方法

关键字:extendsimplements

语法:public class 子类名 extends 父类名{}

注:对于继承,子类继承除构造函数外所有属性,其中还可以在子类中对继承的属性进行修改或者重写,子类中可对类属性进行增加。

例4public class Aextends D{   //A类继承D类,AD类的子类

  public void play(){

System.out.println("A");

}

  public String sex;

}

例题2public class Test {

    public static void main(String[] args) {

D a2 = new A();

D a3 = new D();

a2.play();

a3.play();

}

}

注:子类对象可以初始化给父类对象,反之则不可以。

 

4.自动转型和多态

自动转型:子类的对象自动转型为父类的类型

                   父类类名  变量名 = new  子类类名();

注意:转型后的对象,如果子类重写了父类的方法,则执行的是重写后的,如果没有重写,则执行的是父类的

多态性:多个同类型的对象,执行同一个方法,结果不一样

 

5.方法分类(普通方法、构造方法、抽象方法)

格式:

普通方法:public 返回类型  方法名(参数列表){}

构造方法:public 类名(参数列表){}

抽象方法:public abstract 返回类型 方法名(参数列表);

 

6.类的分类(普通类、抽象类、接口)

区别:

普通类:public class 类名{}

 1.只能定义普通方法和构造方法,一定不能有抽象方法

 2.属性可以是常量,也可以是变量

 3.可以创建对象

 

抽象类:public abstract class 类名{}

 1.三种类型的方法都可以存在

 2.属性可以是常量,也可以是变量

 3.不能创建对象

 

接口:public interface 类名{}

 1.一定只能有抽象方法

 2.一定只能是常量

 3.不能创建对象

   

注意:在接口中,常量修饰词(static final)和抽象方法修饰词(abstract)可以省略,但是在抽象类中不能省略

 

7.接口/抽象类继承

格式:

抽象类继承:public class 子类类名 extends 抽象父类{}

接口继承:public class 子类类名  implements 父类接口名{}

 

注意:

1.抽象类和接口,当做父类使用,用于指导子类方法的定义

2.抽象类是单继承,接口是多继承

 

0 1
原创粉丝点击