this关键字: 当成员变量和局部变量同名时,用this区分 在static 方法里不能用this 表示方法:this.成员变量名
this 代表当前对象的引用地址
this.成员方法
this语句
1、this([参数类型 参数名称]); 一般情况下,this表示的构造函数 this();
2、根据this语句里面参数去找相匹配的构造函数
3、this语句只能在构造函数里使用并且必须在句首
4、this只能放在本类中
自动创建构造函数方法: 右击source ---倒数第三项using fileds;
面向对象的特征:封装、继承、多态、(抽象)
一、什么是封装?把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类或者对象进行操作,对不可信的类或者对象隐藏,这样的过程叫做封装。
private 1、不能对类进行封装
2、一般只对类的属性进行封装,不对方法进行封装
3、为了封装后的属性能在其他类中使用本类的成员属性,需要扩大该属性范围,这时需要使用GET(获取)和SET(设置)方法
自动创建get和set方法: 右击source ---geters and seters;
二、什么是继承?一个新类从现有的类派生。这样的过程叫继承;在继承的过程中,派生的类被称为子类,现有的类被称为父类
继承格式: [修饰符] class 子类 extends 父类名{}
继承特点:1、子类只能继承一个父类,不能继承多个父类,也就是说java是单一继承的东西
2、private字段不能被继承
3、在继承的时候会调用父类的构造函数
方法的重写:override 当父类的方法不能满足子类的需求,那么这时需要在子类中进行重写这个方法,这个过程叫方法的重写(覆写)
重写注意:1、在重写的过程,方法的结构不能改变,但是方法的修饰符可以改变,但修饰符权限要大于或等于父类中的访问修改符
2、在创建对象的时候,如果仅仅创建父亲对象,调用的是父类方法,而子类创建对象,调用的重写之后的方法
object是所有类的父类
super 和this的使用方法一样,但只能在子类中使用
1、super只能在子类中使用,调用父类的方法 如 super.name 表示父类的name
2、super();调用父类的构造函数
3、因super();和this();都必须放在句首,所以不能同时存在
自动创建重写方法:击source override----Methods;
final 关键字 作用:
1、把变量变成常量
2、用final修饰的这个类不能被子类去继承
3、用final修饰的方法可以被子类继承,但是不能被子类进行重写
static 静态修饰符 关键字
1、可修饰成员成员变量、成员常量、成员方法
2、不能修饰构造函数
3、不能修饰局部变量,局部变量只能用final修饰
用static修饰的成员叫类成员,使用staitc修饰的成员变量叫类变量,使用static修饰的方法方法叫类方法
反之叫实例成员,实例变量,实例方法
static 使用范围
1、类成员只能使用类成员,不能使用实例成员(静态的只能使用静态的而不能使用非静态的)
2、实例成员可以类成员和实例成员(非静态的可以使用静态和非静态的)
3、用static修饰成员后多了一种调用方式:直接 类名.类成员
4、因使用static修饰后变成公共的,不仅是对对象进行共享,还对类进行共享,不安全尽量少用
5、用static修饰的方法可以被子类继承但是不能被重写
静态代码块:随着类的加载而加载
static{
执行语句
}
{
执行语句 //随着创建对象时调用,优先于构造函数的执行语句
}
*当对象只使用一次时,尽量使用匿名创建对象
包(package)是Java用于提供访问保护和命名空间管理的方式,就是用来将Java中类和接口等进行分类管理的工具,类似于操作系统中的目录
命名规则:一般情况下:倒置域名.功能名 eg: java.util.Scanner
包名必须放在类之前
利用DOS命令编译带包的类:
javac -d . demo1.java (按包名编译到对应路径的.class文件)
java 包名.demo1
包的导入: import 包名.类名;
什么时候需要导入包:当需要调用的类不在本包中,需要导入包
默认包不能被导入
快捷键导入所有包:ctrl+shift+o
类的修饰符 public (default) final
private 只能在本类中使用,不能被继承
(default) 不加修饰符,能在同包的类中使用,能被同包的子类继承
proctected 能在同包的类中使用,非同包的子类,能被继承
public 能被所有类访问,也可以被继承
向上转型:用子类引用地址创建父类的对象 eg: Animal a =new Dog();
向上转型之后调用的方法如果被子类重写之后,调用的是重写之后的方法
向上转型必须是继承
向下转型:判断这个父类是不是属于这个子类,如果属于则强制转换 Dog d=(Dog)new Animal();