分享第八天---关键字

今天有看到一些java关键字的使用,觉得很有意义,也分享一些.


static


静态的

static修饰变量-----静态变量|类变量,stitic是成员修饰符,不能修饰局部变量.(定义在方法中和语句块中,就是{}中的语句)
static修饰方法,-----静态方法|类方法
被static修饰的方法|变量使用的方式:
1.类名.静态变量名;类名.静态方法名
2.对象.静态变量名;对象.静态方法名
静态的内容是属于类的,成员的内容是属于对象的,跟随对象使用
静态的变量会在类第一次加载时加载,独有一份,是当前类中所有的对象共享的资源.
在静态的内容中,可以直接使用静态的内容,不可以直接使用非静态的内容
在非静态的内容中,可以直接使用静态的内容.

public class StaticText {
	//静态变量 |类变量
		static int a=13;
		//成员变量
		int b=5;
		public static void main(String[] args) {
			System.out.println(a);         //13
			System.out.println(StaticText.a);//13
			StaticText sd=new StaticText();
			System.out.println(sd.a);       //13
			System.out.println(sd.b);        //5```			
			change();
			System.out.println(a); 			//14
			System.out.println(sd.b);		//5
			
			sd.change2();
			System.out.println(a); 			//15
			System.out.println(sd.b);	 	//6
		}
		//静态方法
		public static void change(){
			a++;
			StaticText sd=new StaticText();
			sd.b++;
			System.out.println(a+"-->"+sd.b);  //a=14		b=6
		}
		
		//成员方法  中的成员变量和this,指代调用当前成员方法的对象
		public  void change2(){
			a++;
			this.b++;
			System.out.println(a+"-->"+this.b);  //a=15		b=6
		}
}

 

block
块,以{}作为区分,就是一个作用域
用于方法中|语句块中–局部代码块|普通代码块 执行时机:跟随方法执行
用于类中方法外---------构造块 执行时机:new对象时执行
static{}------类中方法外----静态块 类第一次加载的时候执行
同步块–>多线程
要注意的要点有:构造块在创建对象的时候,其中一步调用构造器,构造块会在构造器之前执行,如果有多个构造块,那就从上往下依次执行.
它的运行顺序:静态块----main方法----构造块----构造器


public class BlockTest04 {
	public static int a=0;
	{
		a=10;
		System.out.println(".非静态代码块执行a="+a);
	}
	static {
		a=6;
		System.out.println(".静态代码块执行a="+a);
	}
	public BlockTest04(){
		this(a);
		System.out.println("."+a);   
		System.out.println(".无参构造方法执行a="+a);		
	}
	public BlockTest04(int n){
		System.out.println("."+n);
		System.out.println("."+a);
	}
	public static void main(String[] args) {
		System.out.println("main");
		BlockTest04 tsc=new BlockTest04();
	}
}



private

私有的,成员修饰符,不能修饰局部方法,
私有的内容只能在本类中使用,
对私有的内容提供了公共的访问的方式,数值器,访问器
方法:setter getter
对私有的内容,提供了访问方式也不一定是真的安全的
1.不能直接操作在属性上
2.使用逻辑进行判断

面向对象的三大体性之一
封装:对外隐藏内部的实现细节,提供公共的访问方式.
那么私有就是封装了吗,这个问题大部分人都会搞错.
私有肯定是封装,但封装不一定只有私有,方法 类 . 但是封装的一种体现…
那我们来说一下封装的好处
A;隐藏了实现细节,提供了公共的访问方式
B:提高代码的复用性
C:提高了代码的安全性
在讲一下javabean类
它是一个实体类----模版类----封装类
javaBean编码规则:
(1) javaBean必须声明为public class,这样才能够被外部所访问;
(2) 一个JavaBean中至少存在一个无参构造方法
(3)类中所有的属性都必须封装,即:使用private声明;
(4)为封装的私有属性提供公共的setter、getter方法


public class Person {
		//姓名
		String name;
		//年龄
		private int age;
		//alt+/这是一个无参构造器
		public Person() {//			
		}	
		//alt+shift+s-->o-->enter这是一个有参构造器
		public Person(String name, int age) {
			super();
			this.name = name;
			this.age = age;
		}		
		//age属性的设置器
		public void setAge(int age){
			if(age>0 && age<150){
				this.age=age;
			}else{
				System.out.println("年龄格式错误");
				return;
			}
		}		
		//age属性的访问器
		public int getAge(){
			return this.age;
		}
		//吃
		public void eat(){
			System.out.println("不吃不胖,多吃多胖!!!  --横批:燃烧我的卡路里");
		}
		public void info(){
			System.out.println(name+"-->"+age);
		}
}

Extends

继承
我们为什么会要使用继承呢,这个问题在大家刚开始学习的时候大家都会被问到
它的作用就是为了达到类层面的一个复用
平时我们使用继承的模式就是
子类 extends 父类

特点
1.子类一旦继承父类,就自动拥有了父类的内容
2.一个类可以有多个子类,但是只能有一个父类,是一种单继承机制,多实现.
3.子类是父类的延续+扩展.

父类|基类|超类------被继承的类
子类|派生类:-------继承其它类的类
继承的优点就是提高代码的复用性
单继承的优点----使用简单
单继承的缺点:—不方便与后期维护
面向对象设计原则之一
开闭原则对修改关闭对扩展开放



public class Extends {
	public static void main(String[] args) {     //主方法
		Teacher teacher=new Teacher();
		teacher.name="殷唯";
		teacher.age=18;
		teacher.teach();
		teacher.sleep();
	}
}

//父类
class Person{
	String name;
	int age;	
	public void sleep(){
		System.out.println("不好好休息就要狗带...");
	}
}
//教师类继承Person类
class Teacher extends Person{
	String subject;
	
	public void teach(){
		System.out.println(name+"正在上课...");
	}
	
}
//学生类继承Person类
class Student extends Person{
	String hometown;
	
	public void study(){
		System.out.println(name+"正在学习...");
	}
}

this

this指代当前对象(new的对象),代表当前的地址
他有两个功能
一. 调用本类中其它的构造器
this()[参数列表]);
1.要求在构造器的首行使用this调用其它构造器
2.两个构造器不能相互调用,否则会形成死循环.
二. 区分同名变量的问题
1.区分成员变量与局部变量之间的同名问题,
2.构造器中区分成员变量和参数之间同名问题,默认就近原则,如果调用成员 this.属性名,因为this中存放的是当前调用构造器的对象的地址.
3.this在成员对象中起到指代当前调用成员方法的对象
4.如果不存在同名变量的问题,在使用成员变量时的时候默认前面省略了this…this是可以省略的



举个例子
public class This {
	public static void main(String[] args) {
		Person p=new Person("张三",18,181);
		System.out.println(p);
		p.info(333);
	}
}
class Person{
	String name;
	int age;
	int height;
	
	public Person() {
		System.out.println("我是空构造");
	}
	
	public Person(String personName) {
		name=personName;
		System.out.println("我是带参构造器 name");
	}
	public Person(String name,int age) {
		this();
		this.name=name;
		this.age=age;
		System.out.println("我是带参构造器 name  age");
	}
	public Person(String name,int age,int height) {
//		name=personName;
//		age=personAge;
		this(name,age);  //调用奔雷其他构造器,至其他构造器的代码
		this.height=height;
		System.out.println("我是带参构造器 name  age  height");
		System.out.println(this);
	}
	public void info(int age){
		System.out.println(this.name+"-->"+this.age+"-->"+height);
		System.out.println(this);
		this.haha();
	}
	
	public void haha(){
		System.out.println(name+"hhhhhhhhhhh");
	}

}




猜你喜欢

转载自blog.csdn.net/weixin_45116848/article/details/90729530