JavaSE

JavaSE:Day1:
简单知识点概要:
1:关于private关键字
2:关于this和super的使用
3:关于final关键字的使用
4:构造方法
5:静态static
6:继承
7:抽象
8:接口的实现
9:多态
10:成员内部类
11:扩展知识点代码块

一:关于private关键字:

概念:表示为定义为私有的,在成员方法中定义了private关键字,只能在本类中直接使用,不能在其他类中直接被使用,只能用private常用的方法(get/set)来调用:
扩展:在后面的反射也可以直接获取到变量的值;
set用来给定义的变量进行赋值值;
get用来获取到定义变量的值;
	class Test{
		private String name;
			public void  setname(String name){
				this.name=name;
			}
			public String getname(){
				return  name;
		}
}

在主方法中进行使用private修饰的变量:

	class Test1{
		public static void main(String []args){
			Test  t=new  Test();
			t.setname("小王");
			System.out.println(t.getname);   //小王
			
			}
		}

二:关于this和super的使用:

this:
	概述:表示的是当前类;
super:
	概述:表示为父类
父类
class Fu{
	String name="父亲";
	public void method(){
		System.out.println(这是父类中的method1);
	}
}
子类
class Zi extends Fu{
	String name="儿子";
	public void method(){
		//这是在子类中的name:儿子
		System.out.println("这是在子类中的name:"+this.name);
		System.out.println("这是在父类中的name:"+super.name)
		//这是在父类中的name:父亲
		System.out.println("这是一个子类中的子类");
	}
}
主类:
class Test{
	public static void  main( String []args){
		Zi z=new Zi();
		z.method();
		//输出结果:
		//这是在子类中的name:儿子
		//这是在父类中的name:父亲
		//这是一个子类中的子类
		}
}

三:关于final关键字的使用:

概述:表示为final修饰的,被该关键字修饰的将可看作为一个常量,变量的值不可被修改.

//在本类中进行使用
class Test{
//成员变量
	final String name="小王";
	public void method(){
	//局部变量
	final String  age=16;
		//age=17;   无论是在成员变量还是在局部变量都不能修改final的值
		//在本类中可以正常的获取
		//一般在写本类的变量调用的时候是不需要写this的,但是为了更好的理解,所以我还是加上
	System.out.println("获取本类中被final修饰的name:"+this.name);
		//尝试对被final修饰的变量进行重新赋值--->会报错!
		//this.name="小新"; ----->这里就开始爆红了(报错)
				
	}
	
}
//在其他类中进行调用和修改:
class Test1{
	public static void main(String []args){
		//创建Test对象
		Test  t=new Test();
		//t.name="小新"; --->报错:也不能在其他的类中进行修改
	}
}

四:构造方法:

正常类都是有成员方法的:
没有构造方法的类:匿名内部类,内部类,这两种后面会进行介绍

class Test{
	String name;
	int age;
	SDtring sex;
	public void Test(){
		System.out.println("这是一个无参构造");
	}
	public void Test(String name){
		System.out println("这是一个有参构造");
		}
	public void Test(String name,int age,String sex){
		System.out.println("这是一个满参构造");
	}
	
}
class Test1{
	public static void main(String []args){
		//该调用的是无参构造,这里是利用无参构造在堆内存中new出来了一个类对象
		Test  t=new Test();
		//输出结果是:
		//这是一个无参构造
	}
}

五:静态static的使用:

概述:被该关键字修饰的方法 和变量在其他类中使用都不能被直接调用;
调用方式:类名.方法();或者是:类名.变量

 class Test{
	static String  name="小王";
	public static void method1(){
		System.out.println("这是被静态static关键字修饰的name:"+name);
	}
}
class Test1{
public static void main(String [] arsg){
	Test t=new Test();//创建了对象,但是也是不能调用Test中的方法和成员变量的
	//String a=t.name;---->直接爆红,提示中也没有该name
	//类名.调用成员变量
	System.out.println(Test.name);
	//调用成员方法
	Test.method1();
	//输出结果:这是被静态Static关键字修饰的name:小王
	}
}

六:继承:

概述:当一个子类继承了父类之后将继承拥有父类的成员方法和成员变量;
注意:(构造方法和私有变量和静态方法不能被继承),一个子类只能同时继承一个父类,但是可以嵌套继承达成概念是的爷父子类的关系

calss Fu{
	static String name="小王";
	String  name1="小新";
	private String name2="小郑";
	int age=18;
	public void Fu(){
		System.out.println("这是Fu类中的无参构造");
	}
	public static void method(){
		System.out.println("这是静态成员方法!");
	}
	public void method1(){
		System.out.println("这是成员变量");
	}
	public void method2(String name){
		System.out.println("这是一个在Fu类中的method2中的成员方法:"+name);
	}
}
class Zi{
	int age=10;
	public void Zi(){
	//这里是调用了父类中的构造方法,如果是有参的,那么就直接在括号中填写顺序相同,和个数相同,参数类型相同的值;
		Super();
	//这里使用的age是来自于子类中的
		System.out.println("这是Zi类中的构造方法:"+age);
		//如果想要使用来自与父类中的age
		System.out.println("这是Zi类中调用Fu类中的成员变量age:"+super.age);
	}
	public static void Zimethod1(){
		System.out.println("这是子类中的静态方法");
	}
	//如果在继承或者是在实现的关系下,那么在子类中复写了父类中的方法并且参数列表相同,那么可以看作是子类重写了父类中的method2方法
	@Override      //这是判断是否是重写了父类中的方法
	public void method2(String name){
		System.out.println("这是一个在Zi类中的method2中的成员方法"+name);
	}
}
class Test{
	public static void main(String []args){
		Zi zi=new Zi();
		zi.method1();
		zi.method2("小王");
		//输出结果
		//这是Fu类中的无参构造
		//这是Zi类中的构造方法:10
		//这是Zi类中调用Fu类中的成员变量age:18
		//这是成员变量
		//这是一个在Zi类中的method2中的成员方法小王
		}
}

七:抽象:

抽象概述:是指使用abstract关键字修饰的类或者方法,
注意:
1:一个类被abstract关键字修饰的方法一定是抽象类,
2:一个被abstract关键字修饰的类的方法,不一定是抽象方法
3:当抽象类被继承,那么子类一定是要重写里面全部的抽象方法
4:如果是抽象方法是没有代码块的,只能在实现类中填写行为
5:抽象类有构造函数

抽象部分:

class abstract Fu{
	public abstract void method ();
	public void method1(){
		System.out.println("这是在抽象子类中的成员方法");
	}

}
calss Zi extends Fu{
	@Override
	public void method(){
		System.out.println("这是重写父类中的抽象方法");
	}
	public static void method1(){
		System.out.println("这是一个在子类中的静态方法method1");
	}
}
class Test{
	public static void main(String []args){
		Zi zi=new Zi();
		//用类名调用子类中的静态方法
		Zi.method1();
		//类对象调用子类中的成员方法
		zi.method();
		//输出:
		//这是重写父类中的抽象方法
		//这是一个在子类中的静态方法method1
	}
}

八:接口的实现:

概述:接口是类行为的抽象(我们通常是把一个被多个类实行的方法抽取为一个接口),接口,接口中只有,静态方法,和抽象方法,还有默认方法,没有构造方法,一个类可以实现多个接口,一个接口可以继承多个接口
注意:
1:接口中是没有构造方法的
2:接口中只有:常量,抽象方法,静态方法和默认方法 (jdk8),私有方法
接口中成员的访问特点:
接口中的常量: 主要是供接口直接使用
接口中的抽象方法: 供实现类重写的
接口中的默认方法: 供实现类继承调用,或者重写调用
接口中的静态方法: 只供接口直接调用,实现类继承不了
接口中的私有方法: 只能在接口中直接调用,实现类继承不了

//这里定义一个接口:
interface  A{
	//定义一个常量
	static final String name="小新";
	//定义一个默认方法
	public default vodi method(){
		System.out.println("这是一个默认方法");
	}
	//定义一个静态方法
	public static void method1(){
		System.out.println("这是一个静态方法");
	}
	//定义一个抽象类
	public void eat();
	//定义一个私有方法
	private void method2(){
		System.out.println("这是一个私有方法");
	}
}
class Cat implements A{
	@Override
	public void eat(){
		System.out.println("猫吃鱼");
	}
}

```java
class Test{
public static void main(String []args){
	Cat cat=new Cat();
	cat.eat();
	//输出:
	//猫吃鱼
	}
}

九:多态部分:

多态是继封装、继承之后,面向对象的第三大特性;
注意:如果要进行多态,那么就一定要继承或者是实现

class F{
	public void method(){
		System.out.println("这是一个在F类中的成员方法");
	}
	public static void method1(){
		System.out.println("这是一个在F类中的静态方法");
	}
}
class Zi extends  F{
	public void method(){
		System.out.println("这是一个在Zi类中的成员方法");
	}
	public static void method1(){
		System.out.println("这是一个在Zi类中的静态方法");
	}
	}
class Test{
	public static void main(String []args){
	//对象调用非静态方法,父类编译,子类执行
	//对象调用静态方法,父类编译,父类执行
		F  t=new Zi();
		t.method();
		//这是一个在Zi类中的成员方法
		t.method1();
		//这是一个在F类中的静态方法
	}
}

扩展:向上转型和向下转型
向上转型就是正常的多态

class F{
	public void method(){
		System.out.println("这是一个在F类中的成员方法");
	}
	public static void method1(){
		System.out.println("这是一个在F类中的静态方法");
	}
}
class Zi extends  F{
	public void method(){
		System.out.println("这是一个在Zi类中的成员方法");
	}
	public static void method1(){
		System.out.println("这是一个在Zi类中的静态方法");
	}
	public void look(){
		System.out.println("我是一个指尖玩家");
		}
	}
class Zi2 extends F{
	public void method(){
		System.out.println("这是一个在Zi2类中的成员方法");
	}
	public static void method1(){
		System.out.println("这是一个在Zi2类中的静态方法");
	}
}
class  Test{
	public static void main(String [] args){
		F  t=new Zi()
		//父类的引用指向子类的引用
		Zi  z=(Zi)t;   //向下转型,可以访问子类独有的功能方法
		z.look();
		//输出:
		//我是一个指尖玩家
/***
	扩展
	//在进行下辖转型的时候,最好添加个判断在进行转型
	if (t instanceof Zi ){   //如果可以转型,那么返回为true,否则为false
		Zi  z=(Zi)t; 
	}
	*/
		
	}
}

十:成员内部类:

概述:就是在类中定义一个成员类
注意:内部类访问外部类成员,包括私有成员直接访问
如果外部类访问内部类成员必须要建立内部类对象
外部类调用内部类对象创建格式:
外部类名.内部类名 对象名=new 外部类型.new内部类型

class Test{
	private String name="小王";
	//外部类访问内部类
	public void  method(){
	//因为是在本类中,所以内部类创建对象就行
		Test1  t=new Test1()
		System.out.println(t.name);     //小新
	}
	public class Test1{
		String  name="小新";
		public void method1(){
				//访问外部类的成员变量
			System.out.println(Test.name);   //小王
			//访问内部类的成员变量
			System.out.println(name);  //小新
	}
}
}
class Demo{
	public static void main(String []args){
		Test.Test1  t=new Test().new Test1();
		t.method1();     //调用内部类中的method1
		Sytstem.out.println(t.name);    
		//输出结果:
		//小王
		//小新
		//小新
		Test t1=new Test();
		System.out.println(t1.name);   //小王
		t1.method()   //小新
		}
	
}

十一:代码块:

概述:就是在方法中的花括号中的就是代码块

class Demo{
static{
	System.out.println("这是静态代码块");    //在加载class文件的时候运行
}
{
	System.out.println("这是构造代码块");     //在创建对象的时候运行,比构造方法快
}
public vodi Demo(){
		System.out.println("这是构造方法");
	}

}
class Test{
	public static void main(String []args){
				Demo d=new Demo();
				//输出结果:
				//这是静态代码块
				//这是构造代码快
				//这是构造方法
		}	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值