java 入门3.23

今日所学:1.复习构造函数的定义和一些注意事项 (知识点的复习)

2.通过写代码来学习this引用 和注意事项

this代表当前实例 this可引用实例变量,实例函数,以及类的构造函数

this();引用无参构造函数 注:引用构造函数时,必须放在第一行

this(参数);引用有参构造函数

3.static 修饰

1)static修饰的变量称为类变量 修饰的方法称为类方法 (也称静态方法) 与之对应的实例方法也称为非静态方法

注:实例方法可以调用静态方法 但是静态方法不能调用实例方法

2)静态块 static{ } 在执行时首先被执行 作用:<1>对某些数据初始化。<2>用来做数据库链接

4.访问权限

1)public 公有的

2)private 私有的

3)protected 受保护的

4)默认的 即前面没有修饰权限

注:[1]变量和方法的访问权限有1)、2)、3)、4)

[2]类的访问权限只有1)、4)

5.类的继承

1)声明 :class 子类名 extends 父类名{}

2)子类只能继承父类的非私有变量和方法

6.如何使用其他包中的类

说明:在用eclipse写代码时代码旁边的注释包括一些相关比较详细的知识点,以上所陈述为所学知识点的总结 还有今天讲的知识点特别杂 包含以前的一些知识 和一些小的可能对写代码有用的小的容易忽略的知识点。

个人反思:知识点需要经常结合代码来看,来练否则在老师进行讲解时会有一种一知半解的感觉。

以下为代码截图和代码文本

 

 

 

 

 

 

package com;

public class Student {
	public long idNum;//实例变量
	public String name;
	private static long nextId=0;//静态(类)变量  用来给新创建的对象赋予一个Id 同时统计学生的人数
	
	public Student(){
		nextId++;
		
	}
    public Student(long id,String name){
    	//nextId++;
    	//this();//使用  this  来调用无参构造函数
    	this(id);//将形式参数id 传递给有参的构造函数  实现数据初始化
    	//this.idNum=id;//this 代表当前实例
    	this.name=name;
    	
    }
    public Student(long id){
    	this();//this 调用构造函数  必须放到构造函数第一句
    	this.idNum=id;
    	
    }
    public static long getId(){//静态方法  要使用类来直接引用
    	return nextId;
    }
	/**
	 * @param args
	 */
    //本实例演示构造函数写法和this引用当前实例进行数据初始化的方法
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
package com;

public class TestStudent {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Student st=new Student();
        System.out.println(Student.getId());
        
        Student st2=new Student(20,"zhang san");
        System.out.println(Student.getId());
        
        Student st3=new Student(120);
        System.out.println(Student.getId());
        
        Student st4=new Student(230,"zhaoliu");
        System.out.println("st4的姓名"+st4.name+"idNum:"+st4.idNum+"序号:"+Student.getId());
        
        System.out.println(Student.getId());
        
        new Student();//nextId也在自增
        System.out.println(Student.getId());
        
	}

}
package com;

public class TestStatic {
// Static   及其用法  Static 修饰的变量为类变量(静态变量) 修饰的方法称为类方法(静态方法)  修饰的语句块为静态块
	
	public TestStatic(){
		System.out.println("执行构造函数!");
	}
	public  static int stvar;
	
	static {//定义一个静态块     静态块最早被执行
		System.out.println("这是一个静态块!");
	}
	
	public static void stfunction(){
		System.out.println("这是一个静态函数!");
	}
	public void function(){
		System.out.println("这是一个实例方法!");
		stfunction();//实例方法可以直接调用静态方法(类方法)
	}
	 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
        stfunction();//静态函数可以在静态函数中调用
        //function();  静态方法不能直接调用非静态方法(实例方法)  要调用实例方法必须 先  构造对象  然后由对象来调用它自己的方法
        new TestStatic();
	}

}
package com;

public class TestPrivate {
	//测试访问权限    使用 IDE(集成开发环境)的好处    当变量不可见时  会自动显示错误信息
	
	/*几个访问权限
	 * private私有的       public公有的       protected 受保护的       前面没有修饰权限,则是默认的
	 * private修饰的变量再 本类中是可见的   在本类之外是不可见的
	 * public  修饰的变量再 本类中是可见的   在本类之外是可见的
	 * 默认的访问权限       在本包是可见的
	 */
	private int privateint;
	public int  publicint;
	  int  defaultint;//默认的访问权限
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
    TestPrivate t= new TestPrivate();
    t.privateint=20;
    t.publicint=30;
	}

}
  class A{
	  
	  public void f(){
		 TestPrivate t= new TestPrivate();
		 // t.privateint=30;The field TestPrivate.privateint is not visible
		   t.publicint=40;
	  }
	  
	  
  }
package com.cn;
//import com.Student;//使用其他包中的类一定要先导入
//导入方法  1.直接导入包名.类名   2.导入该包中所有的类  包名.*
import com.*;     
    //快捷修复错误提示   快捷键ctrl+1
//类的访问权限   除了导入使用的类 还要注意类的访问权限   类的访问权限  只有public 和 默认  
//所以一个文件要有多个类  只能有一个类是public  其他的必须是默认的类  即不能再加public权限修饰
public class TestClass {
       
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Student st=new Student();
		TestPrivate tp=new TestPrivate();
	}

}
class a{
	
}
package com;

public class TestExtends {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SuberClass sub=new SuberClass();
		sub.printvar();
		sub.superfuction();
	}

}
class SuperClass{//定义一个超类  又叫父类
	int superint;
	private int superprivate;
	public SuperClass(){
		this.superint=20;
	}
	public void superfuction(){
		System.out.println("执行父类的函数");
	}
}
class SuberClass extends SuperClass{//子类SuberClass继承父类SuperClass
	//子类可以继承父类的非私有变量和方法,私有的是不能被继承的
	
	public void printvar(){
		System.out.println("输出到继承的变量"+superint);
		//System.out.println("输出到继承的变量"+superprivate); 私有变量不会被继承   The field SuperClass.superprivate is not visible
	}
	
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值