Java面向对象-类和对象

1.面向对象本质

a、以类的方法组织代码,以对象的方式组织数据。

b、面向对象三大特性

封装:属性私有,get/set
package Day03;

/**
 *  封装特性
 */
public class Teacher {
    /**
     * 属性私有 private
     */
    private String name;
    
    private int id;
    
    private int age;

    public String getName() {
        return name;
    }

    /**
     *  可以对一些不合法数据在set方法进行过滤
     *  
     * @param name name
     */
    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

继承 
	类和类之间的关西
	关键字extends;
	is a的关系,子类是父类的扩展;
	java 只能单一继承;
	object类:在java中都默认直接或者间接继承object类;
	super;
	方法重写
		只在继承关系中存在,区别方法重载;
		@override;
		只和非静态方法有关;
		方法修饰符:可以扩大,不能缩小;
		异常:异常范围可以缩小,不能扩大;
		重写意义: 子类可能不需要父类某些功能。
	ctr+h显示继承关系;
	私有属性和方法无法被继承。

/**
 *  继承关系学习
 *
 *  不需要显示的继承object
 */
public class Person {
    // 私有属性和方法不能被继承
    protected String name = "teacher";

    public Person() {
        System.out.println("Teacher 构造函数被执行。");
    }
}

/**
 *  继承关键字extends,
 */
public class Student extends Person {
    private String name = "student";

    public Student() {
        // super 先执行父类构造函数
        // 如果显示调用 super() 必须写在第一行
        System.out.println("Student 构造函数被执行");
    }

    public void test(String name) {
        System.out.println(name); // 输入参数
        // this调用自己的, super调用父类
        System.out.println(this.name); // student
        System.out.println(super.name); // teacher
    }
}

多态
多态是方法的多态。
存在条件:继承关系;方法需要重写;父类引用指向子类对象 Father f = new Son();
static(类)方法final(常量)pivate都不能重写。

2、类和对象关系

类是抽象的,对象是具体的。

3、创建和初始化对象

a、使用new关键字创建对象,并且new时候会调用构造方法,给属性赋值,Java提供默认无参构造函数

package Day03;

/**
 *  面向对象学习,student就是一个学生类,类是抽象的,用来组织代码(属性和方法),对象是具体的,用来组织数据。
 */
public class Student {
    /**
     *  类的构成,属性和方法
     *   // 方法 1、静态方法, 类名.方法名;
     *     // 2、非静态方法,实例化才能使用
     *     // 静态方法和类一起创建,非静态方法只有实例化之后才存在
     */
     String name;
     int age;
     
    public void study() {
        System.out.println(this.name + "在学习");
    }

    /**
     *  创建和初始化对象
     *   如何创建: new
     *   初始化: 构造方法, java中提供了默认的无参构造方法
     *      属性默认初始值
     *         数值 0 0.0
     *         char u000
     *         boolean FALSE
     *         引用类型 全部为null
     *   对象是通过引用来操作的,栈里面存的是对象在堆里面的地址
     */
}

b、构造函数

特点:必须和类名相同,没有返回值,也不能写void;
作用:new的时候调用,用来初始化属性;
注意:定义有参构造也必须显示定义无参构造。

/**
 *  构造器学习
 *
 */
public class Person {
    String name;
    /**
     *  构造方法,作用:实例化初始值,new的时候调用此方法,因此使用new关键字必须有构造方法
     *
     */
    public Person() {
    }

    // 有参构造定义的话,无参构造也必须显示定义
    // alt + insert 快捷键生成构造方法,select none 生成无参构造
    public Person(String name) {
        this.name = name;
    }

    /**
     *  构造器
     *   两个特点
     *   作用
     *   注意点:定义有参,必须显示定义无参
     *   this 表示当前类
     */
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值