java笔记(八)-------面向对象

本文详细介绍了Java面向对象的三大特性:封装、继承和多态。封装强调隐藏实现细节,通过get/set方法访问属性;继承允许子类继承父类的属性和行为,提高代码重用性;多态则体现在父类引用指向子类对象,增强了代码的通用性。此外,还涵盖了类的成员,包括属性、方法、构造器、代码块和内部类的使用和特性。
摘要由CSDN通过智能技术生成

一、面向对象的三大特性

1、封装性

封装性的设计思想,即把该隐藏的隐藏起来,该暴露的暴露出来,以此实现程序设计的高内聚(类的内部数据操作细节自己完成,不允许外部干涉)、低耦合(仅对外暴露少量的方法用于使用)。

java中通过将数据声明为私有的(private),在提供公共的(public)方法:get()和set()实现对该属性的操作。

java中使用权限修饰符来限定对该类成员的访问权限。

修饰符 类内部 同一个包 不同包的子类 同一个工程
private yes      
(缺省) yes yes    
protected yes yes yes  
public yes yes yes yes

注:对于class的权限修饰只可以使用public和default(缺省)。

2、继承性

继承是面向对象最显著的一个特性。 继承是从已有的类中派生出新的类, 新的类能吸收已有类的数据属性和行为,并能扩展新的能力。在JAVA中, 被继承的类叫父类(parent class)或超类(superclass), 继承父类的类叫子类(subclass)或派生类(derivedclass)。 因此, 子类是父类的一个专门用途的版本, 它继承了父类中定义的所有实例变量和方法, 并且增加了独特的元素 。

java中只支持单继承和多层继承,不允许多重继承。即一个子类只能由一个直接父类,一个父类可以派生出多个子类。子类不能直接访问父类中私有(private)的成员变量和方法。

继承可以提高代码的重用性。

注:子类是否能继承父类的私有方法?

从语言角度上说:JDK官方文档明确说明子类不能继承父类的私有方法;

但从内存角度来说,jvm在实例化子类对象之前,会现在内存中创建一个父类对象,然后在父类对象外部放上了子类独有的属性,两者合起来形成一个子对象。所以子类确实拥有父类的所有属性和方法,但是父类中的私有方法子类无法访问。

3、多态性

多态性是面向对象中最重要的概念,在java中体现为:父类的引用指向子类的对象,可以直接应用在抽象类和接口上。

java的引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。可以简称为:编译时,看左边;运行时,看右边。

如果编译时类型和运行时类型不一致,就出现了对象的多态性。同时,一个引用类型变量如果声明为父类的类型,但实际引用的是子类的对象,那么该变量就不能在访问子类中添加的属性和方法。

多态的小结:①作用:提高了代码的通用性,常称作接口重用②前提:存在继承或者实现关系,有方法的重写③成员方法:编译时:要查看引用变量所声明的类中是否有多调用的方法;运行时:调用实际new的对象所属的类总的重写方法④成员变量:不具备多态性,只看引用变量所声明的类。

 

二、类的成员

                                                                                           java类的成员

class Person{
    //属性,或者成员变量
    String name;
    boolean isMarried;
    
    //构造器
    public Person(){}
    public Person(String name, boolean isMarried){
        this.name = name;
        this.isMarried = isMarried;
    }

    //方法,或者函数
    public void walk(){
        System.out.println("人走路...");
    }
    public String display(){
        return "名字是:"+name+",Married:"+isMarried;
    }

    //代码块
    {
        name = "zhangsan";
        isMarried = true;
    }

    //内部类
    class pet{
        String name;
        float weight;
    }
}

1、属性

语法格式:修饰符  数据类型  属性名 =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值