Java基础from《Java从入门到精通》第六版第六章学习总结

181 篇文章 3 订阅

类与对象

在这里插入图片描述

面向对象概述

面向对象是把所有预处理的问题抽象为对象,通过了解这些对象具有的相应属性以及展示这些对象的行为,来解决这些对象面临的一些实际问题。
其实际上是对现实世界中的对象进行建模操作
1.对象
现实生活中可以说一切皆对象,通常我们把对象划分为两个部分,静态部分和动态部分。
静态部分 <=> 属性
动态部分 <=> 对象可执行的动作行为
计算机的世界中面向对象程序设计的思想要以对象来思考问题,把现实世界的实体抽象为对象,考虑这个对象具备的属性和行为。
步骤:
1.识别对象的属性
2.识别对象具有的行为
3.描述对象与类之间的关系
2.类
类是同一类事物的统称,即类是对象的统称。
类是抽象的,对象是实体。
类是封装对象的属性和行为的载体,具有相同属性和行为的一类实体被称为类。
类中可以抽象出一个实体对象我们通常使用实体对象来解决实际问题。
在Java中类对象的行为是以方法的形式定义的,对象的属性是以成员变量的形式定义的,所以类包括对象的属性和行为。
3.封装
面向对象程序设计具有以下特点:封装性,继承性,多态性
封装是面向对象编程的核心思想
将对象的属性和行为封装起来,其载体就是类,类通常对用户隐藏其实现的细节,这就是封装的思想
采用封装的思想保证了类内部数据结构的完整性,用户无法轻易修改操作类的数据结构,只能执行类允许公开的数据,避免外部操作对内部数据进行影响,提高了程序的可维护性。
4.继承
类之间的关系称为关联。关联主要描述两个类之间的一般二元关系。其中继承就是关联中的一种。
当处理一个问题时,可以将一些有用的类保留下来,遇到相同问题时拿来复用,节省两个相似对象出现的共同属性和行为的时间,这就是继承的基本思想。
设计软件时,使用继承思想可以缩短软件开发的周期,复用那些已经定义好的类可以提高系统性能,减少系统在使用过程中出现错误的概率。
继承性主要利用特定对象之间的共有属性。
在这里插入图片描述
5.多态
将父类应用于子类的特征是多态。
多态性允许统一的风格编写程序,依靠父类实现统一风格的处理,可以实例化子类的对象,日后只要维护和调整父类的方法,无需处理子类,降低了维护的难度,节省了时间。
多态的实现不依赖于具体类,而是依靠抽象类和接口。

1.成员变量
在Java中,对象的属性也称为成员变量
其实成员变量就是普通的变量。
在这里插入图片描述
2.成员方法
语法:

权限修饰符 返回值类型 方法名(参数类型 参数名)//参数可以不写
{
	……
	return 返回值;//可以有也可以没
}

例子:

public class java_3 {
    public int add_count(int x, int y) {
    //定义一个加法器int型方法名为add_count,参数为int型的x,y
        int sum;
        sum = x + y;
        return sum;//返回值为sum
    }
}

如果无返回值可以用void作为类型
3.权限修饰符
权限修饰符主要包括:private、public、protected,他们控制类和类的成员变量,成员方法的访问。
private修饰类的成员变量或成员方法只能在当前类中使用,并且这个类将隐藏其内的所有数据,以免用户直接访问
public修饰类的成员变量或成员方法则可以在子类和其他包的类中使用
protected修饰那么只有在本包内的该类的子类或其他类可以访问该类的成员变量和成员方法
如此:
public和protected修饰的类可以由其子类访问,若子类和父类不在一个包中那么只有public修饰的类可以被子类访问
在这里插入图片描述
4.局部变量
在成员方法中定义的一个变量被称为局部变量,形参也可以看成局部变量。
局部变量在方法执行时被创建,执行结束时销毁,使用时必须进行赋值或初始化,否则报错
例子:

public class java_3 {
    public static int[] exchange (int[] arr ) {
        int temp = arr[0];
        arr[0] = arr[1];
        arr[1] = temp;
        return arr;
    }
    public static void main(String[] args)
    {
        int[] arr = {2,58};
        System.out.println("original:"+ arr[0] + "\t" + arr[1]);
        arr = exchange(arr);
        System.out.println("exchange:"+ arr[0] + "\t" + arr[1]);
    }
}

程序展示:
在这里插入图片描述
局部变量的有效范围(作用域):执行声明开始到执行结束
5.this关键字
this关键字用于表示本类当前的对象,当前对象不是某个new创建出来的实体对象,而是当前正在编辑的类,this关键字只能在本类中使用。
在这里插入图片描述
setName中形参name和成员变量name名称相同,在Java中规定用this来代表本类对象的引用,this被隐式地用于引用对象的成员变量和方法。
this.name指的是java_4中的成员变量name
=name中的name指的是形参name
其实setName这个方法就是把形参name赋值给成员变量name
this可以调用成员变量和成员方法,this引用的就是本类的一个对象,在局部变量或方法覆盖了成员变量时,就要用到this关键字来明确引用的是类成员还是局部变量或方法参数
this也可以作为返回值
this可以调用类中的构造方法

类的构造方法

对象的创建通过构造方法完成,其与类同名,每当类实例化一个对象时,类都会自动调用构造方法。
构造方法的特点:
1.无返回值
2.与本类同名
语法:

public 类名()
{
	……
}

例子:

public class appleBox {
    int apple;

    public appleBox(int apple)
    {
        this.apple = apple;
    }
    public appleBox()
    {
        this(5);
    }

    public static void main(String[] args)
    {
        appleBox apple1 = new appleBox();
        System.out.println(apple1.apple);
    }
}

程序展示:
在这里插入图片描述

静态变量和静态方法

1.static关键字
static修饰的变量和方法被称为静态变量和静态方法。静态成员属于类所有,区别于个别对象,可在本类或其他类使用类名和“ . ”运算符调用静态成员。
语法:

类名.静态类成员

例子:

public class java_4 {
   static double pi = 3.14159265358979;

   public static void method()
   {
       System.out.println("this is a static method");
   }

   public static void main(String[] args)
   {
       System.out.println(java_4.pi);
       java_4.method();
   }
}

程序展示:
在这里插入图片描述
静态变量与静态方法的作用通常是为了提供共享数据或方法
其任然遵循public,private和protected这些修饰符的约束。
执行类时,希望先执行类的初始化动作,可以使用static定义一个静态区域,这块区域被称为静态代码块。当类文件被执行时,会首先执行static块中的程序,并且只会执行一次。
语法:

public class example
{
	static
	{
		……
	}
}

static关键字注意点:
1.在静态方法中不可以使用this关键字
2.静态方法中不可以直接调用非静态方法
3.局部变量不可以使用static关键字声明
4.主方法必须用static声明
5.只有内部类可以使用static关键字声明

类的主方法

主方法是类的入口点,它定义了程序的开始处。
主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。
主方法语法如下:

public static void main(String[] args){
	……
}

特性:
1.主方法是静态的,所以如要直接在主方法中调用其他方法,则该方法必须也是静态的。
2.主方法没有返回值
3.主方法的形参为数组。
其中args[0]~args[n]分别代表程序的第一个参数到第n个参数,可以使用args.length获取参数个数。

对象

Java是一门面向对象的语言,对象由类实例化而来,所有问题都通过对象来处理,对象可以通过操作类的属性和方法来解决问题。
1.对象的创建
Java中通过new关键字来创建对象,创建类时调用构造方法就是创建对象的过程。
Java 中用new调用构造方法创建对象
语法:

类名 对象名 = new 类名(参数)

例子:

public class People {
    String name;
    int age;
    double height;
    double weight;
    String sex;
    public People(String name,int age,double height,double weight,String sex)
    {
        this.name = name;
        this.age = age;
        this.height = height;
        this.weight =weight;
        this.sex = sex;
    }
    public static void main(String[] args)
    {
        People p1 = new People("Sam",20,175,120,"男");
        System.out.println(p1.sex + "\t" + p1.height);
    }
}

程序展示:
在这里插入图片描述
访问对象的属性和行为
new创建出一个对象后可以用“对象.类成员”来获取对象的属性和行为。
对象的属性和行为在类中是通过类的成员变量和成员方法的形式来表示的,所以当对象获取类成员时,也相应地获取了对象的属性和行为。
例子:

public class People {
    String name;
    int age;
    double height;
    double weight;
    String sex;
    public People(String name,int age,double height,double weight,String sex)
    {
        this.name = name;
        this.age = age;
        this.height = height;
        this.weight =weight;
        this.sex = sex;
    }
    public void call()
    {
        System.out.println(name + "\t" + age);
    }

    public static void main(String[] args)
    {
        People p1 = new People("Sam",20,175,120,"男");
        System.out.println(p1.sex + "\t" + p1.height);
        p1.call();
    }
}

程序展示:
在这里插入图片描述
对象的引用
语法:

类名 对象的引用变量

例子:
在这里插入图片描述
在这里插入图片描述
因为内存地址又长又乱,很难让人记住,所以Java语言利用引用变量帮开发者标记内存地址。开发者只要记住引用变量的名字,就能够在内存里找到对象数据。
简单来说,tom是new People()的“代理人”。
所以new People()能做到的tom也行。
———————————————————————源于书上P109
对象的摧毁
对象也是有生命周期的,所以对象能被创建也能被摧毁,即:内存回收。
Java中有一套完整的垃圾回收机制,当对象使用结束就会自动进行回收。
当对象被赋值为null时也会被回收
但是自动回收机制只能回收new关键字创建的,但如果不用new则无法被识别
在Java中提供了finalize()方法,这个方法时Object类中的,被声明为protected,用户可以在自己的类中定义这个方法,当这个方法被定义,在垃圾回收时会首先调用该方法,在下次垃圾回收时才真正回收被对象占用的内存
注意:
当Java虚拟机内存耗尽时则不会执行垃圾回收

Java中提供System.gc()方法来强制启动垃圾回收器!
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值