static 关键字、静态初始化块、包机制(package、import)、静态导入、继承的实现、继承使用要点、instanceof 运算符

本文介绍了Java编程中的static关键字,包括静态变量和静态初始化块,强调它们在类初始化中的作用。接着讲解了包机制(package、import)和类的导入,以及静态导入的使用。文章深入探讨了继承的概念,强调Java中的单继承特性,并列举了继承使用的关键点。最后,讨论了instanceof运算符的应用,用于判断对象是否为指定类或其子类的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static 关键字:

** 在类中,用static声明的成员变量为静态变量,也称类变量,类变量的生命周期和类相同,在整个应用程序执行期间都都有效。**
1、为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化
2、对该类所有对象来说,static成员变量只有一份,被该类所有对象共享。
3、一般用“类名,类属性/方法”来调用。(也可以同通过对象应用或类名(不需要实例化)访问静态成员。)`

/**

  • 测试static关键字用法
  • @author WY

*/
public class User01 {
int id; //id
String name; //名字
static String company = “东吴集团”; //公司名称
public User01(int id,String name){
this.id = id;
this.name = name;
}

 public void login(){
	 
	 System.out.println("登录:"+name);

 }
 public static void printCompany(){
	 //调用非静态成员,编译就会出错
	 System.out.println(company);
 }
 public static void main(String[]args){
	 User01 u = new User01(101,"吴某人");
	 User01.printCompany();
	 User01.company = "东汉末年三国";
	 User01.printCompany();		 
 }

}
`

静态初始化块

构造方法用于对象的初始化!静态初始化块,用于类的初始化操作!在非静态初始化块中不能直接访问非static成员。


/**
 * 测试static初始化块
 * @author WY
 *
 */
public class User02 {
	int id ;
	String name;
	String pwd;
	static String company;
	static{                     //静态语句块,不能直接访问非静态成员
		System.out.println("执行类的初始化工作");
		company = "东吴集团";
		printCompany();
	}
	public static void printCompany(){
		System.out.println(company);
	}
	public static void main(String[] args) {
		User02 u3 = new User02();
	}
    
}

包机制(package、import)

通过包解决重名的问题,也可以实现对类的有效管理,包对类,相当于文件夹我呢见的作用

**package使用的两个要点:
**
1、通常是类的第一句非注释性语句
2、包名:域名倒着写即可,再加上模块名,便于内部管理类。

* package的使用
 */
package cn.wu.oo; //类的非注释语句第一句

public class User {

}

导入类import

import后,比那与编写代码,提高可维护性。

Java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。

如果导入两个同名的类,只能用包名+类名来显示调用相关类:
java.util.Date date = new java.util.Date()

/**
 * 导入同名的类的处理
 */
package cn.wu.oo;    //非注释语句的第一句

import java.sql.Date;
import java.util.*; //导入该包下所有的类,会降低被编译速度,但是并不会降低运行速度

public class Test {
	public static void main(String[] args) {
		//这里是指java.sql。Date
		Date now;
		//java,util,Date因为和java,sql,Date重名,需要完整注释
		java.util.Date now2 = new java.util.Date();
		System.out.println(now2);
	}

}

静态导入

作用是用于导入指定类的静态属性和静态方法,这样我们可以直接使用静态属性和静态方法。

* 静态导入的使用
 */
package cn.wu.oo;
//以下静态导入方式二选一即可
import static java.lang.Math.*;//导入Math类中所有静态属性
import static java.lang.Math.PI;//导入Math类中的PI属性

public class Test2 {
	public static void main(String[] args) {
		System.out.println(PI);
		System.out.println(random());
	}

}

继承的实现:

继承让我们更加容易实现类的扩展。比如,我们定义了人类,再定义Boy类就要扩展即可。实现了代码的重用,不用再重新发明轮(don’treinventwheels)。从英文字面意思理解,extends的意思是“扩展”。子类是父类的扩展

继承使用要点:

1、父类也称作超类、基类。子类:派生类
2、java中只有单继承,没有像c++那样的多继承、多继承回应器混乱,是的继承链过于复杂。
3、java中类没有多继承,而接口有多继承
4、子类继承父类,可以得到父类的全部方法和属性(除了父类的构造方法),但不见得可以直接访问(比如:父类私有的属性和方法)。
5、如果定义一个类时,没有调用extends,则他的父类是:java.lang.Object。

instanceof 运算符

instanceof 是二元运算符,左边是对象,右边是类;当对象是右面或子类所创建对象是没返回true;否则,返回false

/**
 * 使用extends实现继承
 */
package com.wu.inherit;

public class Test {
	public static void main(String[] args) {
		Student s = new Student("吴洋",170,"java");
		s.rest();
		s.study();
	}

}
class Person  /*Person extends object**/{
	String name;
	int height;
	public void rest(){
		System.out.println("休息一会儿!");
	}
}
class Student extends Person{
	String major;    //专业
	public void study(){
		System.out.println("在学校,学习java!");
	}
	public Student(String name,int height,String major){
		//天然拥有父类的属性
		this.name = name;
		this.height = height;
		this.major = major;
	}
	public static void main(String[]args){
		Student s = new Student("张三",180,"c++");
		System.out.println(s instanceof Person);
		System.out.println(s instanceof Student);
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值