this代表的是当前对象的地址值用;
this的出现就是为了区分局部变量和成员变量
构造方法属于一个类的成员,它的作用就是可以对对象创建进行初始化。
特征:
1、没有返回值类型(因为构造对象创建完成就结束,需要结果)
2、为了区分构造方法和一般方法(构造方法的方法名名和类名相同)
3、构造方法没有void
需要注意的是,如果给出了有参构造方法,系统是不会再提供无参的构造函数的,需要我们自己给出无参函数,建议必须给出无参函数。
构造方法的细节问题:一个类是可以有多个构造函数的,他的是以重载的形式展示出来的。
构造方法是可以被private修饰的,它的作用就是其他类无法创建该类的对象。
private只能修饰成员,不能修饰局部。
可以分为:
有返回值类型: ①带形参的
②无参
无返回值类型的:①带形参的
②无参
static用来修饰成员变量和成员方法。
被static修饰的方法除了被对象调用之外还可以是被类名调用的。
如果定义功能时如果不想访问类中定义的非静态成员变量时,可以用static来进行修饰。
static是随着类的加载而加载,随着类的结束而结束的。
static优先于对象存在,被对象共享
静态方法中是不允许出现this或者super,因为静态是先存在于内存中的,无法访问后来的对象中的数据,所以静态也是无法访问非静态的。
static关键字注意事项:
静态是优先于对象存在。
静态里不允许出现this、super。
静态只能访问静态的变量或者方法。
非静态的成员方法:
可以访问非静态成员变量、静态成员变量。
可以访问静态的成员方法,非静态的成员方法。
静态的成员该方法:
只能访问静态成员变量、静态成员方法。
public static void main(String[]args); jvm识别的程序入口
public:权限修饰符,公众的,公共的,保证权限最大化。
static:静态修饰,和类没关系,优先对象存在。
void:由jvm调用,没有具体返回值,使用void代替。
main:方法名,大部分都是有一个程序的入口。
String[]args:接收字符串类型,args参数名。
问题:
一个变量什么时候可以被定义为成员变量?
当前该变量能够描述当前类的属性(举例:姓名,年龄)才能将该变量定义为成员变量。
定义成员变量是范围越小越好,一般能定义局部变量就定义局部变量。
类指的是·当前事物一组属性和行为的集合。
在Java中使用{ }将代码包裹起来。
局部代码块:是在局部位置(方法中定义),作用就是限定变量的生命周期。
构造代码块:在类中的成员位置,作用就是以后就将相同的代码使用{ }提取出来每次执
行构造方法之前,都会优先构造代码块。
静态代码块:在类中的成员位置,它的作用就是给类中进行初始化,而且是只能执行一次。
定义:集成就是将代码中共有的属性或者行为,抽取出来独立的类(父类也叫超类)
独立的类和其他的类产生一种“继承”关系:extends(子类也叫派生类)
继承的优点在于:
①可以提高代码复用性
②便于后期代码的管理和维护
③让类和类之间产生关系
Java中的开发原则:高内聚,低耦合。
高内聚:类和类之间的关系。
低耦合:指的是完成某一件事情执行能力。
Java中继承的特点:
Java里不支持多继承只支持单继承,虽然不能多继承但是可以多层继承。父类,父父类,父父父类.........
继承需要注意的是:
①子类不能继承父类的私有的成员。
②子类是不能直接继承父类的构造方法,可以通过super来完成。
③继承体现的是is a关系,不能随便为了不能功能,随意继承。
继承中的成员关系问题:
类中的成员有三个:①变量成员②构造方法③成员方法
继承中成员变量的关系问题(这个也是经常在面试中被问到先后顺序):
当子类的成员变量名称和父类成员变量不一致时:
①子类调用成员方法成员方法分别输出对应父类的成员变量和子类的成员变量。
当子类的成员变量名称和父类成员变量一致时:
①首先在子类的局部位置中招,找到了直接输出就行了,如果没有的话直接在成员位置中找。
②找到了的话,输出。
③如果在子类的成位置中找不到的话,就去父类成员位置中找,有的话直接就输出,如果连父类中也没有那就会报错了。
继承关系中构造方法的初始化:
子类不管是无参还是有参都是会默认访问父类的无参构造函数。
因为子类会继承父类中的数据,可能还有用父类的数据,所以,子类初始化之前一定要先完成父类数据的初始化也叫分层初始化。
每一个构造方法的第一条语句默认都是: super()
