Java学习(六)

面向对象

结构化编程和面向对象编程

  • 在Java中,围绕要解决问题的对象来设计,我们通过类来描述对的属性和行为。把其中的一切都当成对象来描述
  • 类与对象是相辅相成的,类是对象,对象是类的实例.
  • 对象的每个属性被表示为类中的一个成员变量,对象的每个行为成为类中的一个方法

类是拥有共同属性的对象的集合。创建一个新的对象要用到关键字New,New+类名表示实例化一个新的对象,例如:

public class Name(){}
建立一个其他的类
public class Other(){
Name name=new Name();//这就表示实例化一个新的对象
}

实例化后,它拥有类的所有属性和方法。

构造函数

在每次new一个对象的时候我们都会通过一个模板来创建,而这个模板就是构造函数。java中默认有构造函数,只是未写出,对象的实例化都是通过构造函数。
如果没有写构造函数,系统会默认创建一个无参的构造函数,如果写了,系统就不再创建,对象的实例化就会通过你的构造函数来进行。

构造函数与其他方法的区别

  • 构造函数的名称必须和类的名字相同
  • 构造函数没有返回值,也不能声明返回值
    public class Test{
    public Test(){
    super();}//无参的构造函数
    public Test(int a){
    super();}//有参数的构造函数
    }
    

    添加多个构造函数的时候,需要应用方法的重载,每个构造函数必须有一个唯一的形参列表。 在构造函数中有super()这个方法,这代表可以调用父类的方法super.方法名。在所有对象中,他们的根就是object,所以默认的super就是代表的object

this关键字

在多个构造函数中,可以用this关键字来调用其他构造函数,该this语句必须在该构造函数的第一行,否则会发生错误。

    public class Test{
    int a=0;
    public Test(){
        this(b);}//a是实参,可以是任意int类型的
    public Test(int a){
        this.a=a}}//把接收到的a的值赋给开始定义的a

继承(extends)

  • 在面向对象编程中,通过拓展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式成为继承
  • 继承中,已有的类称为父类。新的类称为子类。父类可以称为基类、超类
    public class Student{
        public void say(){//声明实现一个方法
    System.out.print("被继承了");}}
    //新建一个类去继承Student
    public class Test extends Student{
        public void test(){
        this.say();}通过this或是super关键字来调用父类的方法
        @Override//重写父类的方法
        public void say(){}
        }
    

在面向对象编程中,当两个或是多个类不相同,但是拥有共同的特征的时候,我们将共同的元素拿出来放到一个父类中。这样使用继承不仅可以重用已有的代码避免代码重复,还可以创建一个易于维护和修改代码的程序
继承中可以使用“is a”关系来判断父类和子类的继承关系是否正确。当使用继承时,我们必须能够说子类is a (是一个)父类,如果是对的,那么继承关系就是正确的
Java中子类只能继承一个父类,但是父类也能拥有父类

方法重写

  • 子类的返回值类型、方法名和形式参数列表,必须和父类中的是相同的。如果子类中的方法与父类中的方法同名,但是子类中的方法改变了形式参数列表,这是方法重载而不是重写了
  • 访问修饰符必须不小于父类中的访问修饰符

final关键字

  • final类 一个类可以声明为最终类的。最终类不能被有子类
  • final方法 一个方法可以声明为最终的,最终方法不能被重写
    public final class Student{}
    

final方法 当子类重写父类的一个方法时,父类中被重写的方法实质上是被隐藏了。在子类中,要调用父类中的方法,唯一的方法是显示的调用。如果不想子类重写,可以将该方法声明为最终的方法。最终方法不能被子类重写

访问修饰符

  • public(公开访问级别):用public关键字修饰的成员对外公开,即公开成员可以被任何其他对象访问
  • protect(受保护访问级别):用protect关键字修饰,受保护成员可以被同一包中的类所访问,还可以被类的子类访问,不管子类在哪个包中
  • 没有访问修饰符(默认访问级别):默认的访问级别的成员可以被同一包中的其他类所访问
  • private(私有访问级别):使用private关键字修饰。他是访问修饰符中级别最低的。私有成员只有类本身可以访问,不对外公开

ps:受保护和默认访问相似的,因为二者都授予可以访问同一包中的其他类。受保护访问类型实际上比默认访问的限制更小,因为受保护访问也授予访问在包外的子类

            本类   同包     子类      外包
public       √      √       √       √
private      √      ×       ×       ×
protect      √      √       √       ×
默认:       √      √       √       ×
                            ↓↓
                  默认的子类出了包就不能访问

封装

封装是使类中的成员变量都是private,并提供public方法访问这些成员变量的技术。如果一个成员变量被声明为private,那么它就不能被其他类访问,从而隐藏了类中的成员变量.因此,封装也被称为数据隐藏

时间: 2024-12-06 08:17:00

Java学习(六)的相关文章

Java学习(六):Socket编程实例

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求. Java已经简化了Socket的编程接口.Java提供了ServerSocket来对其进行支持.事实上当创建该类的一个实例对象并提供一个端口资源,就建立了一个固定位置可以让其他计算机来访问了,如:ServerSocket server=new ServerSocket(6789);       这里稍微要注意的是端口的分配必须是唯一的.因为端口是为了唯一标识每台计算机唯一服务的.

Java学习(六)

public class MatrixAddition{ public static void main(String args[]){ int i,j,k; int a[][] = new int [3][4]; int b[][] = {{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}}; int c[][] = new int[3][4]; for(i = 0;i < 3;i++) for(j = 0;j < 4;j++) a[i][j] = (i + 1)*(j +

java第六周学习总结

学号20145336 <Java程序设计>第五周学习总结 教材学习内容总结 第十章 输入与输出 InputStream与OutputStream java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象.从程序角度来看,如果将数据从来源中取出,可以使用输入串流,如果将数据写入目的地可以使用输出串流.在java中,输入串流对象为java.io.InputStream实例,输出串流对象为java.io.OutputStream实例.流(Stream)是对「输入输出」的抽象,注意「

20145307陈俊达第六周JAVA学习总结

20145307陈俊达第六周JAVA学习总结 知识点梳理 第十章节 S1 ·若要将数据从来源中取出,可以使用输入串流:若要将数据写入目的地,可以使用输出串流.在java中,输入串流代表对象为java.in.InputStream的实例:输出串流代表对象为java.io.Outputstream的实例. ·在来源与目的地都不知道的情况下可以设计一个通用的dump()方法,该方法接受InputStream与OutputStream实例,分别代表读取数据的来源.输出的目的地. ·每次从Inputstr

201671010140. 2016-2017-2 《Java程序设计》java学习第十六周

java学习第十六周         本周对十三章:"部署java应用程序"进行了课堂学习,在老师思路牵引下,对这一章知识进行学习,对实例程序运行和注释,对比课前对书本上知识的浅显预习,半知半解,课堂学习后,对这部分知识的理解也更加深入,尤其是在JAR文件这部分,感觉掌握的不错,对Java程序为何要打包成JAR文件,如何去做都有了进一步学习,认知,之前并不理解如何使用jar程序制作JAR文件,在课堂上同学的演示下,也理解了这部分知识.在对JAR文件中的包的密封,属性映射等方面的知识掌握

第六周java学习总结

学号 20175206 <Java程序设计>第六周学习总结 教材学习内容总结 第七章: 主要内容 内部类 匿名类 异常类 断言 重点和难点 重点:内部类和异常类的理解 难点:异常类的使用 第十章: 主要内容 File类 文件字节输入.输出流 文件字符输入.输出流 缓冲流 随机流 数组流 数据流 对象流 序列化与对象可隆 使用Scanner解析文件 文件锁 重点和难点 重点:通过文件流读写数据,各种数据流的区别.掌握流的连接思想. 难点:流的连接思想及各种数据流的使用. 代码调试中的问题和解决过

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者

JAVA学习第三十六课(常用对象API)- 集合框架(四)— Set集合:HashSet集合演示

随着Java学习的深入,感觉大一时搞了一年的ACM,简直是明智之举,Java里很多数据结构.算法类的东西,理解起来就轻松多了 Set集合下有两大子类开发常用 HashSet集合 .TreeSet集合 Set集合的元素是不重复且无序 一.HashSet集合 API文档解释:此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持.它不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用null 元素. 此类为基本操作提供了稳定性能,注意,此实现不是同步的. 由上可

20165220 Java第六周学习总结

教材学习内容总结 正则表达式:正则表达式是一个String对象的字符序列,该字符序列中含有具有特殊意义的字符,这些特殊字符称作正则表达式的元字符. 链表:由若干个称作结点的对象组成的一种数据结构,用于动态的减少或增加数据项. String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法.在Java中,被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法. String对象:可以使用String类声明对象并创建对象,例如:St

2016最新Java学习计划

一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 学完后目标: 1.可进行小型应用程序开发 2.对数据库进行基本的增删改查管理 市场价值:¥5000 计算机基础知识 计算机基础.DOS常用命令.Java概述.JDK环境安装配置.环境变量配置.Java程序入门 1.2015年Java基础视频-深入浅出精华版(强烈推荐) 2.历经5年锤炼(适合初学者入