java面向对象(3)

访问权限修饰符:
    访问权限修饰符,用来修饰类中的成员,控制其是否能被访问;
    public:公共权限,在系统中哪里都可以访问
            修饰类,方法(构造方法,成员方法),成员变量
    protected:受保护权限,在本类,同包类不同包子类中可以访问
            修饰方内部类、法和成员变量
            :默认权限,在本类,同包类访问
            修饰类(包含内部类),方法,成员变量;
    private:私有权限,只能在本类中访问
            修饰内部类,方法,成员变量;
面向对象语言的三大特征:
    封装:
        封装含义:
            1.包装,例如讲一下常用的功能进行抽取,定义成一个方法;
            2.面向对象特征中的封装:隐藏(控制类中成员对外可见性)
                        
            封装案例1:将类中属性私有化
            封装案例2:将某些方法私有化
            java设计模式(模板,固定套路)
            解决一类问题的固定方式。
            单例模式:单个实例,在系统中,想让某个类只能创建一个对象。
    
    成员变量和局部变量:
    位置:
        成员变量:在类中定义        局部变量:在方法中定义
    权限修饰不同:
        成员变量:可使用权限修饰符;
        局部变量:不可使用权限修饰符;
    初始化不同:
        成员变量: 非静态--在创建后,由构造方法初始化;
                    静态--类加载时初始化;
        局部变量:在方法中声明,声明后需自己进行初始化;
    生命周期不同:    生(创建)                    销毁
        成员变量:    非静态--创建对象            对象被回收
                    静态--类加载                类被卸载
        局部变量:    当方法被调用                当方法执行结束
    在内存中位置不同:
        成员变量:    非静态--与对象在堆空间存储
                    静态--与类信息在方法区中存储
        局部变量:  与方法在栈中存储
    继承:
        子继承父:    儿子就可以拥有父亲的功能
            面向对象也引入继承思想
            猫和狗    都有名字,年龄吃东西等属性和行为;
            可将这些共性和行为抽取,就不需要将这些共性给每个类中重复地定义;
            
            创建动物类:名字,年龄,吃的东西
            创建两个类继承动物类:
            例如:猫 狗 猪等等,在子类中定义他们特有的特征。
        继承的优点:
            减少代码冗余,提高代码的复用性;
            提高程序功能的扩展性;
        继承细节:
        子类不能直接访问父类中私有的成员或方法;(子类是拥有父类的私有成员)
        多种类可以叠加继承:A类->B类->C类
        子类继承父类后拥有父类所有的实例变量和方法。
    重写:    有时父类方法中的实现不满足子类所需实现,
            可将父类方法在子类中进行重写(在子类中对父类方法进行重写)
            如此做则子类功能将覆盖父类功能;
    重写规则:
        方法名,参数,返回值都要相同;
        子类重写权限必须大于等于父类权限(一般就跟父类权限相同即可)
    super关键字:
        在子类中访问父类中的方法或变量;
        super.方法();
        当子类中重写了父类方法时,为区分调用是父类还是子类,使用super来判别;
        
    多态:

package edu.ffyc.day;

/*
    正常类,可使用public和默认权限
    public修饰在任何包中可以被访问
    默认权限只能在本包中使用
 */
public class day7 {
    //前三个在同包中皆可使用
    public int jnum=6;//不同包类中可以使用;
    protected int nnum=8;//只能在本类、同包类、不同包子类中使用;
    int tnum;//只能在本类和同包中其他类使用
    private int mnum;//只能在本类中使用
    //不论什么修饰,在本类中都可调用

    //外部可以通过构造方法进行私有成员赋值
    //但是构造方法获取不了私有变量的值
    public day7(int mnum){
        this.mnum=mnum;
    }
    //若父类无空参的构造方法,子类调super用时编译出错,所以尽量在定义构造方法时,多定义一个无参构造方法;
    public day7(){};
    //可以用方法给私有成员变量赋值或获取私有成员变量的值;
    public void setnum(int mnum){
        this.mnum=mnum;
    }
    public int getnum(){
        return this.mnum;
    }
    public static void main(String[] args) {
        day7 p=new day7();
        System.out.println(p.jnum);
        System.out.println(p.nnum);
        System.out.println(p.tnum);
        System.out.println(p.mnum);
    }
}
​
public class Test {
    public static void main(String[] args) {
        Dinasour dina=new Dinasour();
        Chicken chi=new Chicken();
        dina.Setname("理塘顶真");
        dina.attack="抽瑞克五代";
        chi.Setname("蔡徐鸡");
        chi.attack="铁山靠";
        dina.Setage(15);
        chi.Setage(3);
        chi.eat(true);
        dina.eat(false);
        System.out.println(chi.Getname()+chi.Getage()+chi.attack);
        System.out.println(dina.Getname()+dina.Getage()+dina.attack);
    }
}
class Dinasour extends Animal{
    {
        System.out.println("这是恐龙");
    }
    //子类重写:
    //重写方法结构需与父类的一致
    /*在子类的构造方法中,会默认调用父类的构造方法
      每当创建子类对象时,会调用子类的构造方法,在子类的构造方法中,调用父类构造方法。
      且在构造方法第一行就调用(为保证父类成员初始化),也只能放在第一行调用,若不写子类构造方法会默认第一行为super;
      若父类无空参的构造方法,子类调super用时编译出错
     */
    @Override
    public void eat(boolean plant) {
        System.out.println("顶真吃鸡精");
        super.eat(true);
    }

    String attack;
}
public class Chicken extends Animal{
    {
        System.out.println("这是鸡");
    }
    String attack;
    //重写原因:因为蔡徐鸡想抽瑞克五代
    @Override//对方法进行标识,让他人好理解,方便自己辨认;
    public void eat(boolean plant) {
        System.out.println("蔡徐鸡抽瑞克五代");
    }
}

​

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ARuiiiiiii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值