Java语言基础(八)
来源:互联网 发布:linux c服务器端开发 编辑:程序博客网 时间:2024/06/06 06:43
Java语言基础(八)
A.static关键字(可以修饰成员变量和成员方法):
static关键字的特点:
随着类的加载而加载;
优先于对象存在;
被类的所有对象共享;
可以通过类名调用;
B.static关键字注意事项:
在静态方法中没有this关键字;
静态方法只能访问静态的成员变量和静态的成员方法;
静态变量和成员变量的区别:
1)所属不同:静态变量属于类,也成为类变量;
成员变量属于对象,称为实例变量(对象变量)
2)存储的位置不同:静态变量存在内存的静态区;
成员变量存储在堆内存中;
3)出现的时间不同:静态变量随着类的加载而加载,随着类的消失而消失;
成员变量随着对象的创建而存在,随着对象的消失而消失;
C.继承
继承概念:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么
多个类无需再定义这些属性和行为,只要继承那个类即可
继承关键字:extends
使用:class 子类名 extends 父类名{
}
单独的这个类可以称为父类基类或者超类
多个的类可称为子类或者派生类;
有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,
还可以定义自己的新成员
继承的好处:a.提高了代码的复用性(多个类相同的成员可以放在同一个类中)
b.提高了代码的维护性(如果功能代码需要修改,只需要修改一处即可)
c.让类与类产生关系是实现多态的前提(弊端增加了代码的耦合性);
继承的特点:java只支持单继承,就是一个子类只有一个父类
java支持多层继承
继承的注意事项: a.子类成员继承父类的非私有成员的成员和方法
b.子类不能继承父类的构造方法,但可以通过super关键字去访问父类构造方法;
c.不要为了部分功能而去继承;
************************************************************
继承事例:创建一个无参构造观看构造的调用和super指针
//定义一个基类
class BaseStudent3{
//定义一个私有成员人数
public String Member="我是基类成员";
public BaseStudent3(){
System.out.println("我是基类的构造");
}
}
//定义一个派生类
class DeriveStudent3 extends BaseStudent3{
private String Member="我是派生类成员";
public DeriveStudent3(){
System.out.println("我是派生类的构造");
}
//定义一个方法显示Number数据的不同输出
public void showMember(){
System.out.println(this.Member);
System.out.println(super.Member);
}
}
//定义一个测试类
public class StudentDemo3 {
public static void main(String[] args){
//定义一个派生类对象
DeriveStudent3 der=new DeriveStudent3();
//输出成员
der.showMember();
}
}
******************************************************************
输出结果:
我是基类的构造
我是派生类的构造
我是派生类成员
我是基类成员
由此我们可以分析:
1)super在类中使用它调用的是该类的父类的成员变量和方法;
2)在子类构造中隐藏了一个super();的方法即调用基类构造的方法;
(在创建子类对象的时候函数会自动调用构造,当他进入子类的构造时,代码的第一行隐藏了一个super();所以他会先调用父类的构造)
***********************************************************************************************************************
创建一个父类带参构造用super完成父类的初始化:
//创建一个父类
class Fu{
//创建两个成员变量,给他们的权限为私有
private String Member;
private int Date;
//创建父类的有参构造
public Fu(String Member,int Date){
this.Member=Member;
this.Date=Date;
}
//创建一个方法显示
public void show(){
System.out.println("成员1:"+Member+"\t"+"创建日期:"+Date);
}
}
//创建一个子类
class DeriveFu extends Fu{
//定义一个子类构造
public DeriveFu(String Member,int Date){
super(Member,Date);
}
}
//测试类
public class StudentDemo4{
public static void main(String[] args){
//定义一个子类对象
DeriveFu son=new DeriveFu("高圆圆",20170711);
//显示结果
son.show();
}
}
************************************************************************************************************
输出结果:
成员1:高圆圆 创建日期:20170711
************************************************************************************************************
父类带参构造给他的成员变量赋值的值两种方法:
1)创建父类的对象给他的构造传值;
2)创建子类对象将值传入子类的构造里通过super关键字将值传入父类的构造;
注意事项:1)当父类的成员为私有时
2)在子类中我们不能用super.Xxx访问父类的成员
3)我们不能用son.DeriveFu("高圆圆",20170711)来调用构造方法;
D.代码块:用{}括起来的叫代码块
事例:class Method{
//构造代码块
{
System.out.println("我是构造代码块");
}
//静态代码块
static{
System.out.println("我是静态代码块");
}
//构造方法
Method(){
System.out.println("我是构造方法");
}
}
public class MethodDemo {
public static void main(String[] args){
//定义Method第一个对象
Method me=new Method();
System.out.println("*************************************");
//定义Method第二个对象
Method me1=new Method();
System.out.println("***************************************");
//定义第三个Method对象
Method me2=new Method();
}
}
//////////////////////////////////////////////////////////////////////////
输出结果:
我是静态代码块
我是构造代码块
我是构造方法
*************************************
我是构造代码块
我是构造方法
***************************************
我是构造代码块
我是构造方法
总结:静态代码块的格式:static{}
构造方法的格式:类名(){};(有参传参)
构造代码块的格式{};
执行:当对象一被创建那么代码块都会执行,执行顺序:静态代码块->构造代码块->构造方法
并且静态代码块只执行一次,当再创建其他对象是静态代码块是不被执行的;
A.static关键字(可以修饰成员变量和成员方法):
static关键字的特点:
随着类的加载而加载;
优先于对象存在;
被类的所有对象共享;
可以通过类名调用;
B.static关键字注意事项:
在静态方法中没有this关键字;
静态方法只能访问静态的成员变量和静态的成员方法;
静态变量和成员变量的区别:
1)所属不同:静态变量属于类,也成为类变量;
成员变量属于对象,称为实例变量(对象变量)
2)存储的位置不同:静态变量存在内存的静态区;
成员变量存储在堆内存中;
3)出现的时间不同:静态变量随着类的加载而加载,随着类的消失而消失;
成员变量随着对象的创建而存在,随着对象的消失而消失;
C.继承
继承概念:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么
多个类无需再定义这些属性和行为,只要继承那个类即可
继承关键字:extends
使用:class 子类名 extends 父类名{
}
单独的这个类可以称为父类基类或者超类
多个的类可称为子类或者派生类;
有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,
还可以定义自己的新成员
继承的好处:a.提高了代码的复用性(多个类相同的成员可以放在同一个类中)
b.提高了代码的维护性(如果功能代码需要修改,只需要修改一处即可)
c.让类与类产生关系是实现多态的前提(弊端增加了代码的耦合性);
继承的特点:java只支持单继承,就是一个子类只有一个父类
java支持多层继承
继承的注意事项: a.子类成员继承父类的非私有成员的成员和方法
b.子类不能继承父类的构造方法,但可以通过super关键字去访问父类构造方法;
c.不要为了部分功能而去继承;
************************************************************
继承事例:创建一个无参构造观看构造的调用和super指针
//定义一个基类
class BaseStudent3{
//定义一个私有成员人数
public String Member="我是基类成员";
public BaseStudent3(){
System.out.println("我是基类的构造");
}
}
//定义一个派生类
class DeriveStudent3 extends BaseStudent3{
private String Member="我是派生类成员";
public DeriveStudent3(){
System.out.println("我是派生类的构造");
}
//定义一个方法显示Number数据的不同输出
public void showMember(){
System.out.println(this.Member);
System.out.println(super.Member);
}
}
//定义一个测试类
public class StudentDemo3 {
public static void main(String[] args){
//定义一个派生类对象
DeriveStudent3 der=new DeriveStudent3();
//输出成员
der.showMember();
}
}
******************************************************************
输出结果:
我是基类的构造
我是派生类的构造
我是派生类成员
我是基类成员
由此我们可以分析:
1)super在类中使用它调用的是该类的父类的成员变量和方法;
2)在子类构造中隐藏了一个super();的方法即调用基类构造的方法;
(在创建子类对象的时候函数会自动调用构造,当他进入子类的构造时,代码的第一行隐藏了一个super();所以他会先调用父类的构造)
***********************************************************************************************************************
创建一个父类带参构造用super完成父类的初始化:
//创建一个父类
class Fu{
//创建两个成员变量,给他们的权限为私有
private String Member;
private int Date;
//创建父类的有参构造
public Fu(String Member,int Date){
this.Member=Member;
this.Date=Date;
}
//创建一个方法显示
public void show(){
System.out.println("成员1:"+Member+"\t"+"创建日期:"+Date);
}
}
//创建一个子类
class DeriveFu extends Fu{
//定义一个子类构造
public DeriveFu(String Member,int Date){
super(Member,Date);
}
}
//测试类
public class StudentDemo4{
public static void main(String[] args){
//定义一个子类对象
DeriveFu son=new DeriveFu("高圆圆",20170711);
//显示结果
son.show();
}
}
************************************************************************************************************
输出结果:
成员1:高圆圆 创建日期:20170711
************************************************************************************************************
父类带参构造给他的成员变量赋值的值两种方法:
1)创建父类的对象给他的构造传值;
2)创建子类对象将值传入子类的构造里通过super关键字将值传入父类的构造;
注意事项:1)当父类的成员为私有时
2)在子类中我们不能用super.Xxx访问父类的成员
3)我们不能用son.DeriveFu("高圆圆",20170711)来调用构造方法;
D.代码块:用{}括起来的叫代码块
事例:class Method{
//构造代码块
{
System.out.println("我是构造代码块");
}
//静态代码块
static{
System.out.println("我是静态代码块");
}
//构造方法
Method(){
System.out.println("我是构造方法");
}
}
public class MethodDemo {
public static void main(String[] args){
//定义Method第一个对象
Method me=new Method();
System.out.println("*************************************");
//定义Method第二个对象
Method me1=new Method();
System.out.println("***************************************");
//定义第三个Method对象
Method me2=new Method();
}
}
//////////////////////////////////////////////////////////////////////////
输出结果:
我是静态代码块
我是构造代码块
我是构造方法
*************************************
我是构造代码块
我是构造方法
***************************************
我是构造代码块
我是构造方法
总结:静态代码块的格式:static{}
构造方法的格式:类名(){};(有参传参)
构造代码块的格式{};
执行:当对象一被创建那么代码块都会执行,执行顺序:静态代码块->构造代码块->构造方法
并且静态代码块只执行一次,当再创建其他对象是静态代码块是不被执行的;
阅读全文
0 0
- Java语言基础(八)
- Java语言基础学习笔记(八)
- Java语言基础(八)—— 方法
- Java语言基础-2.八种基本数据类型
- JavaScript语言基础---(八)对象
- java基础<八>-------多态
- java基础八:字符串
- Java基础之八
- Java基础<八>--->包,导入
- Java基础<八>_字符串
- java基础:注解(八)
- Java基础之八:数组
- JAVA基础笔记(八)
- java基础开发(八)
- Golang 语言基础之八: interface
- C语言基础(八)字符串
- Go语言基础学习八-映射
- c语言基础(八)结构体
- 多情况下的边界塌陷问题
- opencv学习笔记(1)——读取路径显示图片和保存jpg图片
- linux vim文本编辑器
- Android 手势 正则匹配图片
- Windows中,为开启了BitLocker的磁盘添加右键锁定菜单
- Java语言基础(八)
- Android
- 使用sort方法对数组进行排序(split()出现错误的解决)
- 1107. Social Clusters (30)
- Lesson04_python3之 列表(List)
- MySQL面试的经典试题
- 贝赛尔曲线时序问题
- hal HAL_FLASH_Program 擦除的问题
- 让未来的科技融入人文温度