类 Class
package note4;
/**
* @author Calvin
* @titile: 人类
* @date 2019/2/20
* @since 1.0
*/
public class Person {
/**
* 状态 -> 属性
*/
private String sleepState = "睡觉中";
/**
* 行为 -> 方法
*/
public void sleep(){
System.out.println("人会睡觉");
}
}
对象 Object
package note4;
/**
* @author Calvin
* @titile: 小明
* @date 2019/2/20
* @since 1.0
*/
public class XiaoMing {
public void personBehavior() {
/**
* 对象 -> 类的一个实例
*/
Person person = new Person();
person.sleep();
}
}
引用 Reference
/**
* @param person -> 根据person -> 引用Person
*/
public void setPerson(Person person){
this.person = person;
}
构造方法 Construction
在创建一个对象的时候, 至少有一个构造方法.
构造方法的 名称必须与 类同名一个类可以有多个构造方法.
public class XiaoMing {
private Person person;
/**
* 构造方法
*/
XiaoMing(){
}
/**
* 带参构造方法
*/
XiaoMing(Person person){
this.person = person;
}
}
this
public void setPerson(Person person){
// this -> XiaoMing 中的属性
// 将传入person的值 -> 赋值给 XiaoMing 中的属性 person
this.person = person;
}
方法重载
package note4;
/**
* @author Calvin
* @titile: 人类
* @date 2019/2/20
* @since 1.0
*/
public class Person {
/**
* 状态 -> 属性
*/
private String sleepState = "睡觉中";
/**
* 行为 -> 方法
*/
public void sleep(){
System.out.println("人会睡觉");
}
/**
* 方法重载
*/
public void sleep(String sleepState){
System.out.println(sleepState);
}
}
抽象类 abstract
作用:
package note4;
/**
* @author Calvin
* @titile: 动物 (抽象类)
* @date 2019/2/20
* @since 1.0
*/
/**
*extend
*/
public abstract class Animal {
/** a.为子类提供通用代码**/
/** 姓名 */
private String name;
/** 性别*/
private String sex;
/**b.为子类提供通用方法的定义 **/
/**
* 动物有什么行为
* @return
*/
public abstract String behavious();
}
最终 final
package note4;
/**
* @author Calvin
* @titile: 公
* @date 2019/2/20
* @since 1.0
*/
/**
* final -> 修饰 类、变量、方法
-> 最终变量不可以修改
*/
// 修饰 类
public final class Dog extends Animal{
// 修饰 变量
final String SEX = "MALE";
// 修饰 方法
@Override
public final String behavious() {
return "Dog can wang wang ";
}
}
静态 static
public final static PrintStream out = null;
// static 类名直接调用
System.out.println("狗会叫");
接口 Interface
package note4;
/**
* @author Calvin
* @titile: USB接口
* @date 2019/2/20
* @since 1.0
*/
public interface Usb {
}
定义: 定义在类内部、方法内部 或 局部代码块中的类
public class OutClass {
// 外部类的静态成员
private static String outClassStatisVariable = "OUT_CLASS_STATIC_VARIABLE";
// 外部类变量
private String outClassVariable = "OUT_CLASS_VARIABLE";
/**
* 2. 非静态内部类 -> 依赖于 外部类对象 存在
*/
public class InnerClass{
public void println(){
// 允许访问 静态 和 非静态 的成员变量
System.out.println(outClassStatisVariable);
System.out.println(outClassVariable);
}
}
}
定义: 声明在 内部的类
注意:
public class OutClass {
// 外部类的静态成员
private static String outClassStatisVariable = "OUT_CLASS_STATIC_VARIABLE";
// 外部类变量
private String outClassVariable = "OUT_CLASS_VARIABLE";
/**
* 1.静态内部类
*/
public static class NestedStaticClass{
// 不能直接访问外部类的非静态成员
// this.outClassVariable
// 只允许访问外部类的静态成员
public void printlnOutMessage(){
System.out.println(OutClass.outClassStatisVariable);
}
}
}
定义:
注意:
package note4.inner;
/**
* @author Calvin
* @titile: 内部类
* @date 2019/2/20
* @since 1.0
*/
public class OutClass {
// 外部类的静态成员
private static String outClassStatisVariable = "OUT_CLASS_STATIC_VARIABLE";
// 外部类变量
private String outClassVariable = "OUT_CLASS_VARIABLE";
public void printlnPartInnerMethod(){
/**
* 3.局部内部类 -> 声明 在方法内部 的类
* -> 不可以使用任何访问 权限修饰符
* -> 不可以 直接访问局部变量
* -> 一定需要访问,则需要使用final对局部变量进行修饰
*/
class PartInnerClass{
private String partInnerVariable = "PART_INNER_VARIABLE";
public void println(){
System.out.println(partInnerVariable);
}
}
}
}
成员 内部类
package note4.inner;
/**
* @author Calvin
* @titile: 内部类
* @date 2019/2/20
* @since 1.0
*/
public class OutClass {
// 外部类的静态成员
private static String outClassStatisVariable = "OUT_CLASS_STATIC_VARIABLE";
// 外部类变量
private String outClassVariable = "OUT_CLASS_VARIABLE";
public class InnerClass{
/**
* 4.成员内部类 -> 内部类的属性(该属性是成员内部类)
*/
public class MemberInnerClass{
private String memberInnerVariable = "MEMBER_INNER_VARIABLE";
public void println(){
System.out.println(memberInnerVariable);
}
}
}
package note4.inner;
/**
* @author Calvin
* @titile: 内部类
* @date 2019/2/20
* @since 1.0
*/
public class OutClass {
/**
* 匿名内部类(成员匿名类) -> 定义: 没有名称也就是其他地方就不能引用,不能实例化,只用一次, * 当然也就不能有构造器
* -> 格式: new 父类(){子类内容};
* -> 注意事项:可以访问外部类的成员变量和方法
* 不可以声明称static成员变量和static方法。
* 转换成lambda 表达式必须是一个接口
* -> 分类: 成员匿名类和局部匿名类(作为函数参数)
*
*/
// 成员匿名类 -> OutClass hiddenInnerClass下的成员变量
public OutClass hiddenInnerClass = new OutClass(){
// 不可以声明称static成员变量和static方法。
// static String variable;
private String hiddenInnerClassVariable = "HIDDEN_INNER_CLASS_VARIABLE";
public void println(){
System.out.println(hiddenInnerClassVariable);
}
};
}
GitHub