Java的面向对象

Java的面向对象

Java是一种面向对象的程序设计语言,是一种比较符合人类思维习惯的编程思想,当下是一种应用广泛,受到大众欢迎的编程语言。

1、 类与对象

  1. 1、 类

    • 定义:类是对象的抽象,是一组对象的共同行为和特征

    • 格式:public class 类名{}

  2. 1、 对象的创建与使用

    • 创建:类名 对象名称 = new 类名();

    • 使用:对象名称.对象成员;

例:

//创建一个People类
public class People{
    public String name = "Jack";
    public int age = 10;
}

//写一个测试类来创建一个People对象
public class Test{
    public static void main(String[] args){
        People people = new People();//创建一个People对象
        //通过对象来应用他的成员变量 people.name、people.age
        //在输出语句中输出他的值
        System.out.println("姓名:"+people.name+"年龄:"+people.age);
    }
}

2、 构造函数

  • 定义:用于构造对象的一种行为
  • 格式:public 类名(){}
  • 执行:创建当前类的对象的时候,自动执行
  • 注意:

         1. 除了接口类之外所有类都会有构造方法
         2. 构造方法有返回值,返回的是对象在内存中的地址
    
  • 例:

//创建一个People类
public class People{
    public String name;
    public int age;
    //在这儿写一个构造函数(构造函数一般用于变量的初始化赋值)
    //如果不写构造函数并不代表此事就不存在构造函数,而是系统会默认一个构造函数
    public People (String name,int age){
        this.name = name;
        this.age = age;
    }
}
//写一个测试类来创建一个People对象
public class Test{
    public static void main(String[] args){
        People people = new People("Jack",10);//创建一个People对象(自动执行了他的构造函数)
        //通过对象来应用他的成员变量 people.name、people.age
        //在输出语句中输出他的值
        System.out.println("姓名:"+people.name+"年龄:"+people.age);
    }
}
  • 内存分析:(分为栈存储部分和堆存储部分)

这里写图片描述

  • 垃圾清理机制:如果发现堆空间的对象地址没有变量引用,则有垃圾清理机制自动回收

3、方法重载

  • 定义:同一个类中,多个方法的方法名相同,参数列表不同(类型、顺序、个数)的方法互为重载方法
  • 分类:普通方法重载和构造方法重载
  • 构造方法重载作用:可以初始化当前对象的一些属性
  • 注意:

         1. 一旦你重载了构造方法后,则默认的那个没有参数的构造方法就消失了
         2. 如果还需要用无参的构造方法,则需要显性定义出来
    
  • 例:

//创建一个People类
public class People{
    public String name;
    public int age;

    //构造函数的重载
    //在这儿写一个构造函数(构造函数一般用于变量的初始化赋值)
    public People(){}
    //接着又写一个构造函数(参数不同)
    public People (String name,int age){
        this.name = name;
        this.age = age;
    }

    //普通方法的重载(方法名相同,参数不同)
    public void play(){}
    public void play(String name){}
    public void play(String name, int age){}
}

4、继承

  • 定义:子类继承父类的属性和方法(构造方法不能继承)
  • 格式:public class 子类类名 extends 父类类名{}
  • 注意:

         1. 任何一个类都是Object类的子类
         2. 继承只能是单继承,不能是多继承,但是可以多层继承          
    
  • 例:

//创建一个People类(相当于父类)
public class People{
    public String name;
    public int age;

    //构造函数的重载
    //在这儿写一个构造函数(构造函数一般用于变量的初始化赋值)
    public People(){}
    //接着又写一个构造函数(参数不同)
    public People (String name,int age){
        this.name = name;
        this.age = age;
    }

    //普通方法的重载(方法名相同,参数不同)
    public void play(){}
}
//创建一个子类并且继承父类
public class XiaoMing extends People {
    //普通方法可以继承也可以不继承
    public void play(){}
}

5、方法重写和多态

  • 方法重写格式:子类重写父类的方法,方法名、参数列表、返回类型必须都要一样的
  • 格式:public class 子类类名 extends 父类类名{}
  • 自动转型格式:

         1. 子类对象自动转型为父类的类型
         2. 父类类型  对象名=  new  子类类型();        
    
  • 注意:

         1. 自动转型后的对象,如果子类重写了父类的方法,则执行的是重写后的     
    
  • 多态:多个同一个类型的对象,执行同一个方法,过程不一样就是多态性

  • 例:

//创建一个People类(相当于父类)
public class People{
    public String name;
    public int age;

    //构造函数的重载
    //在这儿写一个构造函数(构造函数一般用于变量的初始化赋值)
    public People(){}
    //接着又写一个构造函数(参数不同)
    public People (String name,int age){
        this.name = name;
        this.age = age;
    }

    //普通方法的重载(方法名相同,参数不同)
    public void play(){}
}
//创建一个子类并且继承父类
public class XiaoMing extends People {
    //普通方法可以继承也可以不继承
    //继承了父类的方法也就是对父类的方法的重写
    public void play(){
        System.out.println("小明继承了People");
    }
}

//创建一个测试类
public class Test{
    public static void main(String[] args){
        People xiaoming = new XiaoMing();
        //此时xiaoming对象仍然属于父类People的对象,
        //因为对父类的play方法进行了重写,所以调用的是子类的play方法
        //如果没用重写,则此时调用的是父类的play方法
        xiaoming.play();
    }
}

6、方法分类

  • 构造方法:public 类名(){}
  • 普通方法:public 返回类型 方法名(){}
  • 抽象方法:public abstract 返回类型 方法名();
  • 普通类:public class 类名{}

         1. 方法只能有普通方法和构造方法,一定不能有抽象方法
         2. 可以构造对象     
    
  • 抽象类:public abstract class 类名{}

         1. 三种方法都可以存在
         2. 不能创建对象
    
  • 接口:public interface 类名{}

         1. 只能有抽象方法(可以省略掉中间的abstract修饰词)
         2. 不能创建对象  
    
  • 例:

//创建一个People类(普通类)
public class People{
    //只能有普通方法和构造方法,不能有抽象方法
    public People(){}
    public void play(){}
}
//创建一个People类(抽象类)
public abstract class People{
    //可以有普通方法和构造方法和抽象方法
    public People(){}
    public void play(){}
    public abstract void run(){}
}
//创建一个People接口(接口)
public interface People{
    //只能有抽象方法(abstract修饰词可以省略不写)
    public void play();
    public void run();
}

7、接口抽象类和继承

  • 抽象类和接口作用:用于当父类,被继承,约束普通类的成员定义
  • 继承接口:public class 子类类名 implements 接口名{}
  • 注意:

         1. 接口可以多继承
         2. 接口可以被继承,当然也可以继承,并且只能继承接口
    
  • 例:

//创建一个People类(接口)
public interface People{
    public void play();
    public void run();
}
//创建一个子类并且实现父类接口
public class XiaoMing implements People {
    //接口中的所有抽象方法都要实现重写
    public void play(){
        System.out.println("小明重写了play方法");
    }
    public void run(){
        System.out.println("小明重写了run方法");
    }
}

//创建一个测试类
public class Test{
    public static void main(String[] args){
        People xiaoming = new XiaoMing();
        xiaoming.play();
        xioaming.run();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值