Java基础(十)——面向对象中(对象数组、this引用、构造器、方法之重写重载;面向对象的三大特点)

(一)学习内容

1.利用对象数组存储多个对象;
2.对象的this引用;
3.什么是构造函数,如何定义,如何使用;
4.方法的重载,方法的重写(相同点、不同点);
5.面向对象三大特点:封装、继承、多态;

(二)学会的内容

1.能够熟练运用对象数组存储对象;

为什么要用到对象数组?

数组,是一个容器,学完八大基础类型后,接触到数组,但是,这些数组有一个缺点,就是只能存取单一的数据类型,而更多情况下,我们需要这样一种容器,能够装下各种各样的数据类型。比如说,一个Student类,他有String类型的名字属性,int类型的年龄属性,double类型的分数属性等等,在有这么多种属性的情况下,就有了对象数组这么个东西,可以装下学生这个对象。

2.对this引用的理解更为透彻

this引用:总是指向调用该方法的对象
this作为对象的默认引用有两种情形:
(1)构造器中引用该构造器正在初始化的对象;
(2)在方法中引用调用该方法的对象;
举一个例子:假设定义了一个Dog类,这个Dog对象的run()方法需要调用它的jump()方法,那么应该如何做?

public class Dog{  
          public void jump(){  
            System.out.println("这是狗的jump方法");  
         }  
          
          public void run(){  
            // 创建Dog对象  
            Dog d = new Dog();  
            // 调用jump方法  
            d.jump();  
            System.out.println("这是狗的run方法");  
         }   
          
        }  

如上述是否应该这样调用呢,而this引用的出现则大大简化了这里的代码,在run()方法中,只需要直接使用this.jump();即可调用Dog类的jump()方法。

3.明确知道构造方法的作用

构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此,Java语言提供了一个功能:如果程序员没有为一个类编写构造方法,那么系统会为这个类自动分配一个默认的构造方法。一旦程序员自己写了构造方法,系统不会再自动分配。
构造器又分为无参构造和带参构造,无参构造通常情况下我们是没有编写的,是由系统自动分配的。而带参的构造器,下面举个例子,就容易懂了:

public class Student {
    String name;
    int age;
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
}

在这个类中,写了一个有参构造器,在创建对象的时候,就可以用了。

public class Main {
    public static void main(String[] args) {
        Student stu = new Student("yoyo",20);
        System.out.println(stu.name+"----"+stu.age);
    }
}

4.搞清楚方法重载与重写

重载:子类继承父类,可以继承父类的属性和方法,继承父类的方法这就叫做方法的重载
重写:当父类中不能完全满足子类的需求,子类中可以重写父类的方法
重写简单实例:

public class SuperDemo1 {
    public static void main(String[] args) {
        NewPhone np = new NewPhone();
        np.call();
    }
}

class Phone{
    public void call(){
        System.out.println("打电话");
    }
}

class NewPhone extends Phone{
/*    @Override
    // 方法的重写
    public void call(){
        System.out.println("录音");
    }*/
}

此时控制台输出:打电话
当解除注释后,控制台将会输出:录音

5.面向对象的三大特征

  • 封装:封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过这个类所提供的方法来实现对内部信息的操作和访问。用大白话讲就是,将平时我们写的一些功能写在函数中,通过创建对象来调用这个类的属性、调用类的方法等。
  • 继承:java的继承通过extends关键字来实现,实现继承的类叫做子类,被继承的类叫做父类(基类/超类)。一个父类可以有多个子类,一个子类只可以有一个父类。
    举例:苹果——水果 ,苹果是子类,水果是父类。
  • 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是父类的引用指向子类的对象
    举一个简单的例子:Animal a = new Dog();
public class PolymorphicDemo3 {
    public static void main(String[] args) {
        Animals a = new Dog();
        // Dog类转换为Animals类(向上转型)
        // 只能调用animals中的eat( )方法,而不能调用Dog的swim( )方法
        a.eat();

        // Animals类转换为Dog类(向下转型)----强制转换
        Dog d = (Dog)a;
        d.swim();
    }
}

class Animals {
    public void eat(){
        System.out.println("吃东西");
    }
}

class Dog extends Animals{
    @Override
    public void eat(){
        System.out.println("啃骨头");
    }
    public void swim(){
        System.out.println("狗刨游泳");
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值