一、JavaBean——可重用组件

1.JavaBean是指符合以下标准的Java类

(1)类是公共的

(2)有一个无参的公共的构造器

(3)有属性,且有对应的get、set方法

2.好处

用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一个随时随地的复制和黏贴的功能,而不能关心任何改变。

二、包——package

1.作用:对类文件进行分类管理;给类文件提供多层名称空间;一般包的出现是为了区分重名的类,所以包名要尽量唯一

2.注意事项

包名的所有字母都要用小写。

三、访问权限修饰符public 、 private 、 protected 、 default(默认,即没有修饰符)

1.访问权限大小

public:任何地方

protected:类内部、同一个包内、子类

default:类内部、同一个包内

private:类内部

2.注意事项

对于class的权限修饰只能是public或者default,public类可以在任何地方被访问,default类只可以被同一个包内的类访问。

四、多态

1.体现

(1)方法的重载和重写 (2)子类对象的多态性(父类的引用或者接口的引用指向了自己的子类的对象)//Person p = new Man();

2.好处

提高了程序的拓展性。比如在方法中形参的类型用父类类型,通过多态可以直接传进子类的对象。

3.弊端

当父类引用指向子类对象时,虽然提高了扩展性,但只能访问父类具有的方法,不可以访问子类特有的方法。

4.特点

(1)子类对象的多态性使用的前提:要有类的继承;要有子类对父类方法的重写

(2)程序运行时分为编译状态和运行状态。(编译时不创建对象,只检查语法错误

对于多态性来说,编译时,看“左边”,将此引用变量理解为父类的类型,因此无法访问子类特有的方法

执行时,看“右边”,关注真正对象的实体,即子类的对象,那么执行的方法是子类重写的。

(3)子类对象的多态性,并不适用于属性,即调用的都是引用变量所属的类中的属性。

5.强制类型转换

(1)想要访问子类特有的方法,可以通过强转符:() 将父类对象强制向下转换成子类引用。//Man m = (Man)p;

(2)判断对象是哪个具体的子类类型,可以使用instanceof关键字,格式:对象 instanceof 类型,返回一个boolean值。// if ( p instanceof Man)

 instanceof可以判断对象是否实现了指定的接口或继承了指定的类。                             //  Man m  = (Man)p;

6.代码案例

  class Test{

     public static void main(String[] args){
Test t = new Test();
t.method(new Animal());
System.out.println("========");
t.method(new Dog());
System.out.println("========");
t.method(new Cat());
} public void method(Animal a){//通过多态性,使父类引用可以指向子类对象
System.out.println(a.number);//输出1,说明调用的是Animal类中的number
a.eat();
a.run();
if(a instanceof Dog){
Dog d = (Dog)a;//强制向下转换,才能调用子类特有的bake方法
d.bake();
}
if(a instanceof Cat){
Cat c = (Cat)a;
c.bake();
}
}
} class Animal{
int number = 1; public void eat(){
System.out.println("吃东西");
}
public void run(){
System.out.println("走路");
}
} class Dog extends Animal{
//创建父类同名变量number
int number = 2;
//重写父类eat和run方法
public void eat(){
System.out.println("吃狗粮");
}
public void run(){
System.out.println("狗爬中");
}
public void bake(){
System.out.println("汪汪叫");
}
} class Cat extends Animal{
int number = 3; public void eat(){
System.out.println("吃猫粮");
}
public void run(){
System.out.println("走猫步");
}
public void bake(){
System.out.println("喵喵叫");
}
}

五、object——所有Java类的根父类

1.equals方法

(1)格式:boolean equals(Object obj)

(2)特点

A:只能处理引用类型变量,不能处理基本数据类型变量

B:在Object类中,equals()方法比较的是两个引用变量的地址值是否相等

C:像String类、包装类、FIle类、Date类等这些类重写了Object类的equals()方法,比较的是两个对象的“实体内容”是否完全相同

2.toString方法

(1)格式:public String toString();返回值:getClass().getName() + "@" + Integer.toHexString(hashCode())

(2)注意事项

A:当我们直接打印一个对象的引用时,实际默认调用的就是这个对象的toString()方法

B:当我们打印的对象所在的类没有重写Object中的toString方法时,调用的是Object类中定义的toString方法,返回此对象所在的类的类名及对应的堆空间中对象实体的首地址值。

C:可以通过对Object的toString方法的重写,使对象对应的字符串内容有意义。

Java语法基础学习DaySix的更多相关文章

  1. Java语法基础学习DayEighteen(常用类)

    一.String类 1.特点 String代表不可变的字符序列,底层用char[]存放. String是final的. 2.内存解析 3.常用方法 int length() char charAt(i ...

  2. Java语法基础学习DaySeven

    ---恢复内容开始--- 一.包装类——Wrapper 1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类) boolean——Boolean          byte——Byte ...

  3. Java语法基础学习DayThree

    一.流程控制语句补充 1.switch语句 格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体 ...

  4. Java语法基础学习DayTwentyOne(网络编程)

    一.IP地址和端口号 1.作用 通过IP地址,唯一的定位互联网上一台主机. 端口号标识正在计算机上运行的进程,不同进程有不同的端口号,被规定为一个16位的整数0~65535,其中0~1023被预先定义 ...

  5. Java语法基础学习DayTwenty(反射机制续)

    一.Java动态代理 1.代理设计模式的原理 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上. 2. ...

  6. Java语法基础学习DayNineteen(反射机制)

    一.Refection定义 1.概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性 ...

  7. Java语法基础学习DaySeventeen(多线程续)

    一.线程的特点 1.线程的分类 java中的线程分为两类:守护线程和用户线程.唯一的区别是判断JVM何时离开. 守护线程是用来服务用户线程的,通过在start()方法前调用Thread.setDaem ...

  8. Java语法基础学习DaySixteen(多线程)

    一.多线程的创建 1.作用 程序需要同时执行两个或多个任务时需要多线程. 程序需要实现需要等待的任务时,如用户输入.文件读写操作.网络操作.搜索等,需要多线程. 需要一些后台运行的程序时,需要多线程. ...

  9. Java语法基础学习DayFifteen(IO续)

    一.缓冲流(处理流的一种) 1.作用:可以提高文件操作的效率 2.使用BufferedInputStream和BufferedOutputStream实现非文本文件的复制 特点:flush()方法 代 ...

随机推荐

  1. android--------自定义控件 之 方法篇

    前面简单的讲述了Android中自定义控件的理论和流程图,今天通过代码来详细的讲解一下其中的方法 首先先创建一个类 CircularView 继承于 View,之后实现构造方法(初始化步骤) publ ...

  2. [已解决]Can't update: no tracked branch

    报错:Can't update: no tracked branch 我们之前的分支是drome,然后删除了这个分支,换到了另一个分支上面去了,所以出现了这个问题. 解决办法: 0:点击VCS-> ...

  3. npm常用功能

    1.   npm -v在命令行中输入该代码,可以查看npm当前版本号 2.安装依赖包2.1  npm install <name>先使用cd命令跳转到需要安装模块的目录,在该目录下执行np ...

  4. NOIP2006能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

  5. select 练习语句

    select * from scott.dept;            /查看scott.dept表中的全局信息.        describe    scott.emp:             ...

  6. Linux 环境下 网络IO模型

    本文讨论的背景是Linux环境下的network IO. IO发生时涉及的对象和步骤: 对于一个network IO (这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的proce ...

  7. Vue中 computed 和 methods的区别

    涉及到计算部分的时候,计算属性是基于它们的依赖进行缓存的,如果说值不变,那么它就不会去重新执行,只有当值发生了改变,它才会去重新执行一次,其它时候它都是缓存的.而方法则会反复计算处理.二者之间的差距就 ...

  8. redis集群搭建教程(以3.2.2为例)

    redis从3.0版本开始支持集群,2.X版本主支持sentinel主从模式:所以要搭建集群务必下载3.0以上版本,本教程以3.2.2版本为例. redis集群最少要有3个主节点,最典型的是3主3从组 ...

  9. Flexbox 布局的最简单表单 (转)

    作者: 阮一峰 弹性布局(Flexbox)逐渐流行,越来越多人使用,因为它写 CSS 布局真是太方便了. 三年前,我写过 Flexbox 的介绍(上,下),但是有些地方写得不清楚.今天,我看到一篇教程 ...

  10. suffix word cy dom faction ful fold form out1

    1★cy ﹎﹎﹎﹎性质,状态 2★ dom ﹎﹎﹎﹎领域,范围     1★ faction ﹎﹎﹎﹎达到什么样的状态 2★ ful ﹎﹎﹎﹎满,量 *******有~的 3★ fold ﹎﹎﹎﹎双, ...