Java面向对象(二)

source:http://blog.java1234.com/index.html?typeId=1

Java类的继承

1,继承定义以及基本使用

定义:子类能够继承父类的属性和方法;

注意点:Java中只支持单继承; 私有方法不能继承;

2,方法重写

所谓方法的重写 我们可以在子类中根据实际业务把父类的方法重写;

3,对象实例过程以及super关键字

对象实例化 先实例化调用父类构造方法,再调用子类实例化构造方法;

super关键主要是调用父类方法或者属性;

/*** 动物类* @author user**/
public class Animal {private String name; // 姓名private int age;  // 年龄/*** 无参父类构造方法*/public Animal() {System.out.println("无参父类构造方法");}/*** 有参父类构造方法* @param name 姓名* @param age 年龄*/public Animal(String name,int age) {System.out.println("有参父类构造方法");this.name=name;this.age=age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void say(){System.out.println("我是一个动物,我叫:"+this.name+",我的年龄是:"+this.age);}
}/*** 定义一个Cat类,继承自Animal* @author user**/
public class Cat extends Animal{private String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public Cat() {super();System.out.println("子类无参构造方法");}public Cat(String name, int age,String address) {super(name, age);this.address=address;System.out.println("子类有参构造方法");}/*** 重写父类的say方法*/public void say(){super.say(); // 调用父类的say()方法System.out.println("我是一个猫,我叫:"+this.getName()+",我的年龄是:"+this.getAge()+",我来自:"+this.getAddress());}public static void main(String[] args) {Cat cat=new Cat("Mini",2,"火星");/*cat.setName("Mini");cat.setAge(2);*/cat.say();}
}

运行输出:

有参父类构造方法

子类有参构造方法

我是一个动物,我叫:Mini,我的年龄是:2

我是一个猫,我叫:Mini,我的年龄是:2,我来自:火星

final关键字

final是终结 完结的意思;

使用final声明的类不能被继承;

使用final声明的方法不能被子类覆盖;

使用final声明的变量不能被修改,即为常量;

抽象类

定义:在java中,含有抽象方法的类称为抽象类,同样不能生成对象;

注意点:

1,包含一个抽象方法的类是抽象类;

2,抽象类和抽象方法都要用abstract关键字修饰;

3,抽象方法只需要声明而不需要实现;

4,抽象类必须被子类(假如不是抽象类)必须重写抽象中的全部抽象方法;

5,抽象类不能被实例化;

/*** 定义一个抽象类People* @author user**/
public abstract class People {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public void say(){System.out.println("我的姓名是:"+this.getName());}/*** 定义一个抽象方法 职业 让子类去具体实现*/public abstract void profession();}public class Student extends People{@Overridepublic void profession() {System.out.println("职业是:学生");}}public class Teacher extends People{@Overridepublic void profession() {System.out.println("职业是:老师");}
}public class Test {public static void main(String[] args) {Student student=new Student();student.profession();Teacher teacher=new Teacher();teacher.profession();}
}

运行输出:

职业是:学生

职业是:老师

接口

接口定义:一种特殊的“抽象类”,没有普通方法,由全局常量和公共的抽象方法所组成;

1,接口的定义

接口定义用关键字 interface,注意点:由于接口里的方法都是抽象的,所以abstract可以省略,实际开发一般都是省略的,开发者的习惯;

2,实现接口 可以实现一个或者多个接口,实现接口我们用implements关键字;

3,继承类和实现接口 先继承,后实现接口;

4,接口的继承  接口可以多继承;

对象的多态性

多态性表现:

1,方法的重载和重写;

2,可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现;

public class Animal {public void say(){System.out.println("我是一个动物");}
}
public class Cat extends Animal{public void say(){System.out.println("我是一个猫");}
}
public class Dog extends Animal{public void say(){System.out.println("我是一个狗");}
}
public class Test {public static void main(String[] args) {Dog dog=new Dog();dog.say();Cat cat=new Cat();cat.say();}
}

运行输出:

我是一个狗

我是一个猫

//多态测试,父类引用指向子类具体实现
public class Test {public static void main(String[] args) {// 父类引用指向Dog子类的具体实现Animal animal=new Dog();animal.say();// 更换实现animal=new Cat();animal.say();}
}

运行输出:

我是一个狗

我是一个猫

 

对象的转型:

向上转型:子类对象->父类对象 安全

向下转型:父类对象->子类对象 不安全

Object类

Object类是所有类的父类;

Object类的常用方法

1,public String toString() 返回该对象的字符串表示;

2,public boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”;

instanceof关键字

作用:判断一个对象是否属于一个类

格式:对象 instanceof 类 返回布尔类型

public class Animal {public void say(){System.out.println("我是一个动物");}
}
public class Dog extends Animal{public void say(){System.out.println("我是一只狗");}
}
public class Cat extends Animal{public void say(){System.out.println("我是一只猫");}
}
public class Test {public static void main(String[] args) {Animal dog=new Dog();System.out.println("dog对象是否属于Animal类:"+(dog instanceof Animal));System.out.println("dog对象是否属于Dog类:"+(dog instanceof Dog));System.out.println("dog对象是否属于Cat类:"+(dog instanceof Cat));}
}

运行输出:

dog对象是否属于Animal类:true

dog对象是否属于Dog类:true

dog对象是否属于Cat类:false

匿名内部类

类的内部再定义类;

匿名内部类 这里指的是实例化内部对象 就是没有名字的内部类;

 

作用:假如某个类只使用一次,则可以使用匿名内部类;

包装类

每个基本类型都有一个对应的类;就是所谓的包装类;

 

QQ鎴浘20161020152251.jpg

1,装箱和拆箱

基本类型和类类型可以相互转换;

基本类型到类类型的转换叫做装箱;

类类型到基本类型的转换叫做拆箱;

public static void main(String[] args) {int a=1;Integer i=new Integer(a); // 装箱int b=i.intValue(); // 拆箱System.out.println("a="+a);System.out.println("i="+i);System.out.println("b="+b);
}

运行输出:

a=1

i=1

b=1

2,自动装箱和拆箱

在类类型和基本类型的转换中,是自动转换的 无需强制类型转换;

public static void main(String[] args) {Integer i=1; // 自动装箱的过程 自动把基本类型转换成类类型int i2=i; // 自动拆箱的过程 自动把类类型转成基本类型System.out.println("i="+i);System.out.println("i2="+i2);
}

运行输出:

i=1

i2=1

3,包装类的作用

因为包装类是类类型 所有jdk里提供了很多有用的方法给我们用;

比如从用户界面来两个字符串数据a,b 然后我们程序里要进行相加运算。这时候包装类就派上用场了,我们可以用包装类的方法类进行类型转换。

public static void main(String[] args) {String a="3";String b="5";int m=Integer.valueOf(a); // 调用Integer类的valuesOf方法 把字符串类型转换成int类型int n=Integer.valueOf(b);System.out.println("a+b="+(m+n));
}

运行输出:

a+b=8

单例模式

在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在;

 

有两种实现,一种是饿汉式,一种是懒汉式;

public class Singleton {/*** 构造方法私有*/private Singleton(){}/*** 饿汉式单例实现*/private static final Singleton single=new Singleton();/*** 获取实例*/public static Singleton getInstance(){return single;}
}public class Singleton2 {/*** 构造方法私有*/private Singleton2(){}/*** 懒汉式单例实现 在第一次调用的时候实例化*/private static Singleton2 single;/*** 获取实例*/public synchronized static Singleton2 getInstance(){if(single==null){System.out.println("第一次调用的实例化");single=new Singleton2();}return single;}
}public class Test {public static void main(String[] args) {Singleton singleton1=Singleton.getInstance();Singleton singleton2=Singleton.getInstance();System.out.println("饿汉式:"+(singleton1==singleton2));Singleton2 singleton3=Singleton2.getInstance();Singleton2 singleton4=Singleton2.getInstance();System.out.println("懒汉式:"+(singleton3==singleton4));}
}

运行输出:

饿汉式:true

第一次调用的实例化

懒汉式:true

表示图形

//实现一个类,用来表示图形,定义方法,可以分别计算出矩形和圆形的面积和周长
/*** 图形接口* @author user**/
public interface Graphical {/*** 求面积方法* @return*/public float mianji();/*** 求周长方法* @return*/public float zhouChang();
}/*** 矩形类* @author user**/
public class Rectangle implements Graphical{private float c; // 长度private float k; // 宽度public Rectangle(float c, float k) {super();this.c = c;this.k = k;}@Overridepublic float mianji() {return c*k;}@Overridepublic float zhouChang() {return 2*(c+k);}}/*** 圆形* @author user**/
public class Circular implements Graphical{private float r; // 半径public Circular(float r) {super();this.r = r;}@Overridepublic float mianji() {return (float) (Math.PI*r*r);}@Overridepublic float zhouChang() {return (float) (2*Math.PI*r);}}public class Test {public static void main(String[] args) {Rectangle r=new Rectangle(2,3.5f);System.out.println("矩形的面积:"+r.mianji());System.out.println("矩形的周长:"+r.zhouChang());Circular c=new Circular(1.5f);System.out.println("圆形的面积:"+c.mianji());System.out.println("圆形的周长:"+c.zhouChang());}
}

运行输出:

矩形的面积:7.0

矩形的周长:11.0

圆形的面积:7.0685835

圆形的周长:9.424778

public void f1(){
        System.out.println("汪汪...");
    }

转载于:https://www.cnblogs.com/CareyZhao/p/10329639.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏通讯方式

农药自从上线以来,依靠着强大的产品力以及腾讯的运营能力,在游戏市场上表现可谓是风生水起,根据第三方的调研数据显示,《王者荣耀》渗透率达到22.3%,用户规模达到2.01亿人,每日的日活跃用户(DAU…

小小c#算法题 - 3 - 字符串语句反转

题目:反转语句。 如I love Beijing! 反转后输出 !Beijing love I 特点是指反转单词的顺序,其他字符(这个可以自己指定)不反转。且不能用内置函数,如Split和Substring。 分析:我们需要保证一个单词的字…

unity5.4.3p2里面的AssetBundle打包流程

unity5.4.3p2里面的AssetBundle打包流程,相比之前unity4.x的打包简单了许多,Unity4.X中打包的时候需要自己去管理依赖关系,各种BuildPipeline.PushAssetDependencies()和BuildPipeline.PopAssetDependencies(),一不小心手一抖&…

主成分分析(PCA)原理详解 2016/12/17 · IT技术 · 主成分分析, 数学 分享到: 21 原文出处: 中科春哥 一、PCA简介 1. 相关背景 主成分分析(Principa

主成分分析(PCA)原理详解 2016/12/17 IT技术 主成分分析, 数学 分享到:21原文出处: 中科春哥 一、PCA简介 1. 相关背景 主成分分析(Principal Component Analysis,PCA), 是一种统…

【Tensorflow】 Object_detection之训练PASCAL VOC数据集

参考:Running Locally 1、检查数据、config文件是否配置好 可参考之前博客: Tensorflow Object_detection之配置Training Pipeline Tensorflow Object_detection之准备数据生成TFRecord 2、训练模型 PIPELINE_CONFIG_PATH/data/zxx/models/research/date…

R文件报错的原因

一般R文件报错,无非是资源文件错误,图片命名错误,但是编译都会报错,可以很快解决。但是前几天,引入一个第三方aar包后,项目编译正确,但是就是R文件报错,找不到R文件,整个…

[转]Excel数据转化为sql脚本

在实际项目开发中,有时会遇到客户让我们把大量Excel数据导入数据库的情况。这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库。 1 在数据前插入一列单元格,用来拼写sql语句。 具体写法:"insert into t_student (id,name,age…

void Update ( ) 更新 void FixedUpdate ( )

void Update ( ) 更新 void FixedUpdate ( ) 固定更新 相同点:当MonoBehaviour启用时,其在每一帧被调用,都是用来更新的。 异同点:第一点不同: Update()每一帧的时间不固定,即第一帧与第二帧的时间间隔t…

【点分治】luoguP2664 树上游戏

应该是一道中等难度的点分?麻烦在一些细节。 题目描述 lrb有一棵树,树的每个节点有个颜色。给一个长度为n的颜色序列,定义s(i,j) 为i 到j 的颜色数量。以及 现在他想让你求出所有的sum[i] 输入输出格式 输入格式: 第一行为一个整数…

EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#

EasyJoyStick使用以及两种操作杆EasyJoyStick的使用方法,简单的不能再简单Hedgehog Team-》Easy Touch -》Add Easy Touch For C#Hedgehog Team-》Easy Touch -》Extensions-》Adding A New Joystick配置如图:然后看一下配置,我喜欢掌控性强一…

Web渗透实验:基于Weblogic的一系列漏洞

1. 攻击机windows10 192.168.2.104 2. 靶机ip: 192.168.2.109(linux Ubantu) 192.168.2.111(windows2008R264位) 第一步:启动靶机服务 分别为linux和windows windows环境搭建: 链接:https://pan.baidu.com/s/16KyYb1v1rP9uJ6-5MBotVw   提取…

Unity3D 自动打包整个项目(以AssetBundle实现)

需求: 在移动开发中,手动控制资源的加载、释放和热更新,是很有必要的。 而Unity通过AssetBundle可以实现该需求,但是如果项目资源多起来的话一个个手动打包成AssetBundle则很麻烦。 而本文正为此提供一套一键打包的方案。 资源分…

Python 2.7 cython cythonize py 编译成 pyd 谈谈那些坑(转载)

转自:https://www.cnblogs.com/ibingshan/p/10334471.html Python 2.7 cython cythonize py 编译成 pyd 谈谈那些坑 前言 基于 python27 的 pyc 很容易被反编译,于是想到了pyd,加速运行,安全保护 必要准备 安装cython:…

一、创建Assetbundle 在unity3d开发的游戏中,无论模型,音频,还是图片等,我们都做成Prefab,然后打包成Assetbundle,方便我们后面的使用,来达到资源的更新。

一、创建Assetbundle 在unity3d开发的游戏中,无论模型,音频,还是图片等,我们都做成Prefab,然后打包成Assetbundle,方便我们后面的使用,来达到资源的更新。 一个Assetbundle可以打包一个模型&…

【JS】我的JavaScript学习之路(2)

3.从JavaScript页面解析过程看执行顺序 代码(test.html)&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/x…

王者荣耀提取攻略

1. 王者荣耀安装后&#xff0c;就将模型等资源解压到SD卡目录里&#xff0c;我们需要找到这个目录。模型资源存储在SD卡中&#xff0c;路径为&#xff1a;【/SDCard/Android/data/com.tencent.tmgp.sgame/files/Resources/AssetBundle/】 2. 2 所有英雄的资源包都在这个目…

Exchange ActiveSyn身份验证类型

http://www.exchangecn.com/html/exchange2010/20110125_316.html 配置 Exchange ActiveSync 身份验证 时间:2011-01-25 11:01来源:Exchange中文站 作者:Exchange中文站 点击:3045次ActiveSync 身份验证是客户端和服务器验证其身份以进行数据传输的过程&#xff0c;本文以示例的…

二 SVN代码冲突的解决

问题&#xff1a; A和B都是最新的代码&#xff0c;A修改了代码提交了&#xff0c;B也修改了代码&#xff0c;但是B提交的时候出现冲突的问题。 解决方案&#xff1a;编辑冲突 解决冲突&#xff1a; 方法一&#xff1a;将文件里面冲突的描述去掉&#xff0c;重新提交 方法二&…

Android7.0反射类找不到的问题

Java中使用反射的地方较多&#xff0c;尤其是各种框架中。最近在Android7.0的项目中遇到个问题很奇怪&#xff0c;反射使用的类找不到了&#xff0c;但是编译的时候没问题啊。然后在代码中使用非反射的方式调用代码也是没有问题的&#xff0c;这时奇怪的现象出现了&#xff0c;…

[转]JSon数据解析的四种方式

转至http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式&#xff0c;json正在逐步取代xml&#xff0c;成为网络数据的通用格式。 有的json代码格式比较混乱&#xff0c;可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验&#xf…