JAVA类的一些知识点
1. 某个类中的私有数据域是不能类本身之外的其他任何类访问的。哪怕继承了他的子类
2.关于this的用处。this放在类中,当新建一个对象时,this是指向这个对象的引用,可以用来构造方法,当局部变量和成员变量重名的时候,在方法中使用this表示成员变量以示区分;或者this表示当前对象来使用。
3.关键字 super 可以用于两种途径: 1 ) 调用父类的构造方法。 父类的构造方法不会被子类 继承。它们只能使用关键字 super 从子类的构造方法中调用。当类没有构造方法时,它会自动生成一个无参的隐式构造方法,子类构造方法会自动调用父类无参构造方法,但是如果一个子类有多个构造方法,且在一个构造方法调用另一个构造方法,那么该构造方法不会自动调用父类。2 ) 调用父类的方法。一般是没必要通过super调用,但是父类没有无参构造方法时,可以在子类构造方法通过super调用父类有参构造方法。或者父类重写方法里面调用。
4.方法重写与方法重载
方法名和形参列表共同组成方法签名。
仅当实例方法是可访问时,它才能被覆盖。因为私有方法在它的类本身以外是不能 访问的,所以它不能被覆盖。如果子类中定义的方法在父类中是私有的,那么这两 个方法完全没有关系。 • 与实例方法一样,静态方法也能被继承。但是,静态方法不能被覆盖。如果父类中 定义的静态方法在子类中被重新定义,那么在父类中定义的静态方法将被隐藏。可 以使用语法:父类名 .静态方法名( SuperClassName.staticMethodName) 调用隐藏的 静态方法。
为了避免错误,可以使用一个特殊的 Java 语法,称 为 重 写 标 注( override annotation), 在子类的方法前面放一个 ©Override。
方法重写是指该方法必须使用相同的签名和相同的返回值类型在子类中定义。
方法重载意味着使用同样的名字但是不同的签名来定义多个方法。返回值是可以不相同。仅返回值类型不同的重载是不应该允许的。
5.对象转换和 instanceof 运算符
把父类声明变量类型(尽管实际他实际类型是个子类)显式转变为子类。
Object o = new Student(); // Implicit casting
Student b = (Student)o;// Explicit casting
在尝试转换之前确保该 对象是另一个对象的实例。这是可以利用运算符 hstanceof 来实现的。声明类型 决定了在编译时匹配哪个方法。使用 myObject.getDUmeterO 会引起一个编译错误,因为 Object 类没有 getDiameter 方法。编译器无法找到和 myObject.getDiameterC)匹配的方法。 所以,有必要将 myObject 转换成 Circle 类型,来告诉编译器 myObject 也是 Circle 的一个 实例。 为什么没有在一开始就把 myObject定义为 Circle 类型呢?为了能够进行通用程序设 计,一个好的经验是把变童定义为父类型,这样,它就可以接收任何子类型的值.
6.数据和方法的可见性
类用public修饰和不用public修饰,前者可以不同包内访问,后者只能同一包下访问。只要public修饰类,那么其他包的类都可以继承他,下面说明是成员访问的可见性。
类可以以两种方式使用:一种是用于创建该类的实例;另一种是通过扩展该类创建它的 子类。如果不想从类的外部使用类的成员,就把成员声明成 private。如果想让该类的用户 都能使用类的成员,就把成员声明成 public。如果想让该类的扩展者使用数据和方法,而不想让该类的用户使用,则把成员声明成 Protected。
如果在类的内部创建该类实例,该实例式可以访问private修饰的变量和方法。
使用 private 修饰符可以完全隐藏类的成员,这样,就不能从类外直接访问它们。不使 用修饰符就表示允许同一个包里的任何类直接访问类的成员,但是其他包中的类不可以访 问。使用 Protected 修饰符允许任何包中的子类或同一包中的类访问类的成员。使用 public 修饰符允许任意类访问类的成员。
- android常用接口(一)
- 2014密码时代已死?六种旨在取代传统密码位置的新奇想法
- 程序员你为什么这么累【续】:编码习惯之配置规范
- Spring Security (一) Architecture Overview
- Spring Security (二) Guides
- 一个 android 的框架
- Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式
- android常用接口(二)
- Spring Cloud实战小贴士:Zuul的饥饿加载(eager-load)使用
- RxAndroid完全教程
- 全能型反汇编引擎 – Capstone-Engine
- Hijack攻击揭秘
- 都在说微服务,那么微服务的反模式和陷阱是什么(二)
- Spring Boot 2.0 - WebFlux framework
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释