面向对象基础

1.类

  • 类:属性+行为,类是对象的描述

属性:成员变量【有默认初始化值】

行为:成员方法(去掉static关键字)

  • 局部变量:方法内或方法声明上(形参),存放在栈内存中,随着方法调用存在,随着方法调用完消失
  • 成员变量:类中方法外的变量,存放在堆内存中,随着对象创建存在,随着对象消失而消失

 2.对象

  • 对象:类的实体,类可以有多个实体

package oopReview;

public class telephone {
    String name;
    int price;
    public void phone(){
        System.out.println("make a phone call");
    }
    public void text(){
        System.out.println("sent a text");
    }
}


package oopReview;

public class testTelephone {
    public static void main(String[] args) {
        telephone t1=new telephone();
        t1.name="iphone";
        t1.price=7000;
        System.out.println(t1.name+"is"+t1.price);
        t1.phone();
        t1.text();//注意方法+()
    }
}
  •  对象内存图

有new就会分配堆内存

方法在载入栈内存

 

stu1=null只切断stu1到地址连接,不影响stu2(两个实体)

两个实体都被切断以后,堆内存空间会被垃圾回收

区分两个引用指向不对对象内存图和指向同一对象内存图

3.封装

  • private关键词:权限修饰符,修饰成员,只能在本类中访问

设置值:set方法

获取值:get方法

  • this关键字:限定变量用于指代成员变量,方法被哪个对象调用,this就指代哪个对象

name=name(如上图)会采用就近原则,将name定义

为形参name

4.构造方法

  • 格式:方法名和类名相同/没有返回值类型,没有返回值

  • 每创建一次对象就会执行一次构造方法,不能用 . 手动调用

  • 用于给对象的属性初始化

public class student{
    private int age;
    public student(int age){
        this.age=age;
    }//student s1=new student(21)
}
  • 如果没有定义构造方法,系统自动给出无参构造方法,如果定义了构造方法,系统将不再提够,需要自己写一个

  • 最好永远自己给出无参构造方法

5.javabean

是一个java中的类,可以封装数据

要求:成员变量使用private修饰/提供每个成员变量对应的set和get函数/提供一个无参构造方法

6.继承

  • 子类可以直接使用父类中非私有成员,也可以通过非私有的set、get方法访问父类中的私有成员

public class 子类名 extends 父类名{ }

  • 利弊

    • 好处:提高代码复用性、维护性【需求变更时只需修改一次】

    • 弊端:降低灵活性,子类必须拥有父类非私有成员,增强代码耦合性

  • java中支持单继承不支持多继承,但是支持多层基础【不能同时继承两个父类,但是可以间接继承父类的父类 】

  • 继承中成员变量访问特点:就近原则【子类局部范围找-子类成员范围找-父类成员范围找】

  • 继承中成员方法访问特点:就近原则

    • 通过子类对象访问一个方法,先在子类查找、再查找父类

    • 若子类有还想调用父类方法:super关键字

  • this:代表本类对象的引用

super:代表父类对象的引用

  • 方法重写:子类出现和父类中一模一样的方法声明

    public class ver2 extends ver1{
        @Override
        public void text() {
            super.text();
            System.out.println("text super");
        }
    }

    子类需要父类功能,又需要在功能主题添加子类特有内容

    方法重写与方法重载区

    • 方法重写:在继承体系中,子类出现和父类一样的方法声明【方法名、参数列表、返回值类型

    • 方法重载:在同一个类中,方法名相同,参数列表不同,跟返回值无关

  • 父类的私有方法不能被重写,静态方法必须被子类用静态方法重写【其实不是重写】,非静态方法必须用非静态方法重写

  • 继承中构造方法的访问方法

子类在完成初始化前,一定要先访问父类中的无参构造方法,完成父类初始化:因为子类在初始化时有可能会使用父类中数据

子类全参数构造方法需要初始化父类成员变量

系统在每个构造方法第一行默认隐藏一句super();默认访问父类空参构造方法【父类:访问Object类】

注:this(...)super(...)都必须放在构造方法第一行有效语句,而且两者不能共存

8.final关键字

  • final修饰方法:该方法不能被重修

  • final修饰类:该类不能被继承

  • final修饰变量:该变量不能被再次赋值

    • final修饰成员变量需要注意初始化时机:要么在创建时直接给值,要么在构造方法结束前完成赋值

    • 常量命名规范:一个单词则所有字母大写,多个单词则用_分隔

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值