一、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. CF-831D Office Keys 思维题

    http://codeforces.com/contest/831/problem/D 题目大意是在一条坐标轴上,给出n个人,k把钥匙(k>=n)以及终点的坐标,所有人都可以同时运动,但不可以公 ...

  2. android -------- ConstraintLayout 约束属性(二)

    ConstraintLayout 介绍 (一) ConstraintLayout 最基本的属性控制有以下几个,即 layout_constraintXXX_toYYYOf 格式的属性,即将“View ...

  3. 59 Cookie 与 Session

    Cookie Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对. 客户端会保存Cookie,并会标注出Cookie的来源(哪个服务器的Cookie). 当客户端向服务器发出请求时会把所 ...

  4. Django模型类之models字段类型和参数以及元数据meta

    models之字段类型和参数 示例: # class Test(models.Model): # courses_test # """测试学习用""& ...

  5. win8.1安装密钥

    https://zhidao.baidu.com/question/374064869043943484.html

  6. java的泛型与反射机制

    什么是泛型? 泛型,即“参数化类型”.顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参) ...

  7. select 练习语句

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

  8. A Bug's Life(向量偏移)

    A Bug's Life Time Limit : 15000/5000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total ...

  9. dubbo 负载均衡

    在系统中可以启动多个 provider 实例,consumer 发起远程调用时,根据指定的负载均衡算法选择一个 provider. 在本机配置多个 provider,使用不同的端口: <dubb ...

  10. spring事务管理(详解和实例)

    原文地址: 参考地址:https://blog.csdn.net/yuanlaishini2010/article/details/45792069 写这篇博客之前我首先读了<Spring in ...