zoukankan      html  css  js  c++  java
  • java基础(四)

    一.继承

    1.如何使用继承

    编写父类

    class Pet { 
            //公共的属性和方法
    }

    编写子类,继承父类

    class Dog extends Pet { 
            //子类特有的属性和方法
    }

    只能继承一个父类

    2.子类访问父类成员

    访问父类构造方法: 使用super关键字,super代表父类对象,在子类的构造方法中调用,且必须是第一句

    super();
    super(name);

    访问父类属性

    super.name;

    访问父类方法

    super.print();

    super关键字来访问父类的成员

    super只能出现在子类的方法和构造方法中

    super调用构造方法时,只能是第一句

    super不能访问父类的private成员

    子类能访问父类的所有资源吗?

    不能被继承的父类成员:

    • private成员 
    • 子类与父类不在同包,使用默认访问权限的成员
    • 构造方法

    3.访问修饰符总结

    private : 本类

    默认(friendly) : 本类, 同包

    protected : 本类,同包,子类

    public : 本类,同包,子类, 其他

     4.多重继承关系的初始化顺序

    父类属性 - > 父类构造方法 - > 子类属性 -> 子类构造方法

    5.何时使用继承

    • 当符合is-a关系时

    继承是代码重用的一种方式:

    将子类共有的属性和行为放到父类

    6. 重写

    构造方法会被重写吗?

    不能被继承,因此不能重写。

    方法重写的规则?

    • 方法名相同
    • 参数列表相同
    • 返回值类型相同或者是其子类
    • 访问权限不能严于父类

    方法重载和方法重写

     7.抽象类

    abstract 关键字

    可以用于类,也可以用于方法。

    抽象方法没有方法体

    抽象方法必须在抽象类里

    抽象方法必须在子类中被实现,除非子类是抽象类

    8.final用法

    final 用于类:表示类不能被其他类继承

    public final class Penguin extends Pet { 
          //
    }

    用于方法:表示方法不能被重写

    public final void print () { 
          //
    }

    用于属性:表示属性值不能被修改

    public class Penguin {
           final String  home ="南极";// 居住地
           public void setHome(String name){
           this.home=home; //错误,不可再赋值
        }
    }

    使用final修饰引用型变量,变量的值是固定不变的, 而变量所指向的对象的属性值是可变的

    9. Object类

    Object类是所有类的父类

    一个类如果没有使用extends显示的继承另外一个类, 那么这个类就继承自Object类。

    Object类的主要方法

    (1)toString()方法

    (2)equals()方法

    10. 内部类

    把一个类定义在另一个类的内部称为内部类

    package cn.bjsxt.demo;//声明包 
    class Outer//声明类
    {
        private String info="hello World";//声明私有属性
        class Inner//声明类
        {
            public void print(){//打印输出的方法
                System.out.println(info);
            }
        }
        public void fun(){//定义方法
            new Inner().print();//通过内部类调用方法
        }
    }
    public class TestOuterAndInner2//测试类
    {
        public static void main(String [] args){
            new Outer().fun();//调用方法
        }
    } 
  • 相关阅读:
    043 抖音短视频爬取实战
    048 Python里面yield的实现原理
    047 Python面试知识点小结
    001 Glang实现简单分布式缓存
    046 算法的时间复杂度和空间复杂度计算
    042 使用Python远程监视多个服务器和数据库的状态,python,监控,同步
    041基于python实现jenkins自动发布代码平台
    045 chrome浏览器前端调试技巧
    STL学习
    Asio与Boost.Asio
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/13041327.html
Copyright © 2011-2022 走看看