1、Java学习之封装、构造方法、this关键字、static关键字、继承

MyEclipse快捷键:

Ctrl + d 删除一行
Alt + / 自动补全
Ctrl + 1 纠错
Ctrl + /注释
Ctrl + Alt + down 复制一行
main方法自动补全 main + alt +/
ctrl +shift +f 格式化
ctrl +/ 注释和取消注释
ctrl + shift +/多行注释
ctrl + shift +\取消多行注释
ctrl+shift +t 查找类
ctrl +shift +r 查找资源
ctrl + shift + o 自动import不再同一个包下的类

封装的相关知识

1、所有属性私有化,private修饰,表示私有 数据只能在本类中访问
2、对外提供简单的操作入口, set方法和get方法
3、set方法的命名规范
public void set+属性名首字母大写{}

	public void setAge(int a){
    
    
		age = a;

4、get方法的命名规范

	public int getAge(){
    
    
		return age;
}

5、需要重点掌握的知识点:
setter and getter 方法没有static关键字
有static关键字的方法怎么调用:类名.方法名(实参)
没有static关键字的方法怎么调用:引用.方法名(实参)
例子:

package Test03;

public class UserTest {
    
    
	public static void main(String[] args) {
    
    
	User s = new User(100,"zhangsan");
	System.out.println(s.getId());
	System.out.println(s.getName());
	}
}

java类中构造方法的知识点:

1、语法结构: [修饰符列表] 构造方法名 (形式参数列表){
构造方法体;

2、普通方法的语法结构: [修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
3、构造方法不能写返回值类型(不代表没有返回值)
4、构造方法名必须和类名保持一致
5、意义:通过构造方法的调用,可以创建对象
6、怎么调用?
方法修饰符有static的时候:类名.方法名(实参列表)
方法修饰符没有static的时候:引用.方法名(实参列表)
构造方法 new 构造方法名(实参列表);

//构造动物猫的对象:
Animal a = new Cat();

7、构造方法调用执行后有返回值吗?
有返回值,不需要写return 结束后会自动返回值
返回值类型是所在类的类型,因为就是类本身所以不用编写
8、当一个类中没有定义任何的构造方法的时候,系统会默认给该类提供一个无参数的构造方法,这个构造方法叫做缺省构造器
9、当一个类显示的将构造方法定义出来了,那么系统就不在默认为该类提供缺省构造器,建议手动为该类提供无参数的构造方法,因为无参数构造方法太常用
10、构造方法支持重载机制,一个类中写多个构造方法显然构成了重载机制。

1、构建方法的作用:
创建对象 创建对象的同时,初始化实例变量的内存空间
2、在myeclipse中怎么查看访问的是哪个属性,访问的是哪个方法?
按ctrl键鼠标移动到查看的元素上,出现下划线的时候点击
3、在类中元素过多,怎么查看,快捷键ctrl+o,然后大概搜索
4、成员变量之实例变量,属于对象级别的变量,这种变量必须先有对象才能有实例变量。
5、实例变量没有手动赋值,系统自动赋值,这个系统自动赋值实在什么时候完成的呢?
实际上,实例变量的内存空间是在构造方法的执行过程中进行开辟的,完成初始化的,并完成赋值

this关键字

1、没有static关键字的方法被称为“实例方法” 怎么访问?“引用.”
2、没有static关键字的变量被称为“实例变量”
3、当一个行为/动作执行的过程中需要对象的参与,那么这个方法一定是要定义为“实例方法”。不要带static关键字
4、static的方法调用不需要对象直接使用类名,所以执行过程中没有当前对象,所以this不能使用在带static关键字类中
5、this是一个引用,是一个变量,保存了内存地址指向了自身,this存储在JVM堆内存java对象内部
6、创建100个java对象就有100个不同的this
7、this可以出现在“实例方法”中,this指向当前正在执行的这个动作的对象。
8、this多数情况下可以省略不写

//实例方法如何调用?
class One
{
    
     
float x; //x为实例变量
static int y; //只要有关键字static, y为类变量
}

//有static 不能直接调用实例变量和实例方法
//必须new一个对象,然后用引用.方法名(变量名)

**//下面是错误演示**
public class ThisTest03 {
    
    
	//实例变量
	String name;
	//实例方法	
	public void doSome(){
    
    
			
			}
	//不创建对象,无法访问实例变量和实例方法
	public static void main(String[] args) {
    
    
			System.out.println(name);(访问不了)
			dosome;(访问不了)
	}
}
//通过创建对象访问实例变量和实例方法
public class ThisTest03 {
    
    
	
		String name;
		
		public void doSome(){
    
    
			
		}
	
	public static void main(String[] args) {
    
    
		ThisTest03 w = new ThisTest03();
		System.out.println(w.name);
	}
}

普通的带static和不带static的主方法的调用

public class ThisTest02 {
    
    
	public static void main(String[] args) {
    
    
		//调用普通方法:类名.方法名;
		ThisTest02.doOther();
		//调用构造方法:引用.方法名;
		ThisTest02 s = new ThisTest02();
		s.doSome();
	}
	//构造方法
	public doSome(){
    
    
		System.out.println("do some");
		
	}
	//普通方法
	public static void doOther(){
    
    
		System.out.println("do other");
	}
}

有关带static和不带static的方法调用及实例变量调用的综合案例:
综合案例:

public class Test {
    
    
	//带static的方法
	public static void method1(){
    
    
		//调用doSome
		//完整方式的调用
		Test.doSome();
		//省略方式的调用
		doSome();
		
		
		//访问i
		
		//完整方式访问
		//省略方式访问
		
	
		//调用doOther
		Test t = new Test();///method1中没有对象,需要建立对象。
		//完整方式的调用
		t.doOther();
		//省略方式的调用
		//访问i
		System.out.println(t.i);
		//完整方式访问
		//省略方式访问
	}
	
	//不带static的方法
	public void method2(){
    
    
		//调用doSome
		Test.doSome();
		doSome();
		//完整方式的调用
		//省略方式的调用
		
		
		//调用doOther
		this.doOther();
		doOther();
		//完整方式的调用
		//省略方式的调用
		
		//访问i
		System.out.println(i);
		//完整方式访问
		//省略方式访问
	}

this用来区分实例变量和局部变量的时候不能省略
this可以使用在哪里?
1、可以使用在实例方法中,代表当前对象【语法格式:this.】
2、可以使用在构造方法中,通过当前的构造方法调用其他方法【语法格式:this()】
重点:this()调用构造方法只能在第一行
例子:

//构造函数
//无参数的构造类型,进行属性的初始化
public Data() {
    
    
	this.year = 2008;
	this.mouth = 1;
	this.day = 1;
}
//有参数的数据类型进行赋值。
public Data(int year, int mouth, int day) {
    
    
	//这里的this是不能省略的,局部变量和实例变量共存
	this.year = year;
	this.mouth = mouth;
	this.day = day;
}

我们构造了两个方法,一个是无参数的一个是有参数的,使用无参数的来进行初始化赋值,有参数的进行再次赋值,但是 这样会导致代码大段重复,后期修改会很麻烦,所以这里有更加好的方法。
使用this()在无参数的构造方法中调用有参数的构造方法,进行直接初始化赋值。

//构造函数
public Data() {
    
    
	this(2008,1,1);//使用this来调用其他构造方法
}

public Data(int year, int mouth, int day) {
    
    
	super();
	this.year = year;
	this.mouth = mouth;
	this.day = day;
}

static关键字的学习

1、带有static的方法既可以使用类名的方式访问也可以使用引用的方式的访问,但是实际上执行的时候和引用指向的对象无关
2、静态变量在类加载初始化的时候初始化,不需要创建对象,内存就开辟了
3、静态变量储存在方法区内存中

什么时候成员变量为实例变量呢?
—所有对象都有这个属性,但是这个属性的值会随着对象的变化而变化
什么时候成员变量为静态变量呢?
—所有对象都有这个属性,并且所有对象的这个属性的值是一样的,建议定义为静态变量,节省内存空间

静态变量在类加载的时候初始化,内存在方法区中开辟,访问的时候不需要创建对象,直接使用“类名.静态变量名”的方式访问

可以使用static关键字定义“静态代码块”
1、语法格式
static{
java语句;
}
2、静态代码块在类加载时执行,并且只执行一次。
3、静态代码块在一个类中可以定义多个,并且遵循自上而下的顺序执行
4、静态代码块的作用是什么?怎么用?用在哪儿?
-这个当然和具体需求有关,例如项目要求在类加载的时刻执行完成日志的记录。那么这段日志的代码就可以编写到静态代码中,完成日志记录。
–静态代码块是java为程序员准备的特殊时刻,称为类加载时刻,若希望在此刻执行一段特殊的程序,该程序可以直接放到静态代码块当中。
5、通常在静态代码块当中完成预备工作,先完成数据的准备工具,例如:初始化连接池,解析XML配置文件。。。。

方法什么时候定义为静态的?
方法描述的是动作,当所有的对象执行这个动作的时候,最终产生的影响是一样的,那么这个动作已经不再属于某个对象了,可以将这个动作提升为类级别的动作,模板级别的动作。

继承:

关于java语言中继承
1、继承是面向对象三大特征之一:封装、继承、多态
2、继承基本的作用:代码复用。但是继承最重要的作用是:有了继承才有了以后的"方法的覆盖"和"多态机制"
3、继承语法格式:
[修饰符列表] class 类名 extends 父类名{
类体= 属性 + 方法

4、java语言当中的继承只支持单继承,一个类不能同时继承很多类,只能继承一个类。在c++中支持多继承
5、关于继承中的一些术语:
B类继承A类,其中:
A类称为:父类、基类、超类、superclass
B类称为:子类、派生类、subclass
6、在java语言中子类继承父类继承父类哪些数据呢?
私有的不支持继承
构造方法不支持继承
其他数据都可以被继承

7、虽然java语言中,只支持单继承,但是一个类也可以间接继承其他类,例如:
C extend B{

B extend A{
}
A extne T{
}
C直接继承B类,但是C类间接继承T、A、B类
8、java语言中假设一个类没有显示继承任何类,该类默认继承JavaSE库当中提供的java.lang.Object类

猜你喜欢

转载自blog.csdn.net/Alopecian/article/details/114270173