java面向对象编程的四大特征:

1、抽象

2、封装

3、继承

4、多态

封装

//职员
class Clerk
{
public String name;
//private私有的
private int age;
private float salary; public Clerk(String name,int age,float sal)
{
this.name=name;
this.age=age;
this.salary=sal;
}
//通过一个成员方法去控制和访问私有的属性
public float getSal()
{
return this.salary;
}

java提供四种访问控制修饰符(控制方法和变量的访问权限):

1.公开级别:用public修饰,对外公开

2.受保护级别:用protected修饰,对子类和同一个包中的类公开

3.默认级别:没有修饰符号,向同一个包的类公开

4.私有级别:用private修饰,只有类本身可以访问,不对外公开

包-必要性

包的三大作用:

区分相同名字的类

当类很多时,可以很好地管理类

控制访问范围

包的打包命令:

package com.xxx

包的命名规范:小写字母

java中常用包:

java.lang.*         自动引入

java.util.*           工具包

java.net.*           网络开发包

java.awt.*           窗口工具包

包的引入:

inport  包;(如:import java.awt.*;)

继承

class Pupil
{
//定义成员属性
private int age;
private String name;
private float fee; //交费
public void pay(float fee)
 {
   this.fee=fee;
  }

继承解决类重复问题

所有的子类不需要重新定义属性和方法,只需要通过extends语句声明继承父类

class  子类 extends 父类

​私有属性不能被继承(private)

继承-注意

子类最多只能继承一个父类(指直接继承)

java所有类都是Object类的子类

JDK6中有202个包3777个类、接口、异常、枚举、注释和错误

开发时多使用jdk帮助文档

有些时候必须继承一些类来实现更多的功能:

package com.shun;
import javax.swing.*;
public class Demo2 extends JFrame { public static void main(String []args)
{
Demo demo2=new Demo2(); } public Demo2()
{
this.setVisible(true);
this.setSize(200,200);
}
}

方法重载&方法覆盖

方法重载注意事项:

方法名相同

方法的参数类型,个数,顺序至少有一项不同

方法返回类型可以不同

方法的修饰符可以不同

<只是返回类型不一样,不能够构成重载>

方法的覆盖(子类有一个方法与父类的名称、返回值、参数一样)

public class Demo3{
public static void main(String []args){
//创建一只猫
Cat cat1=new Cat();
cat.cry();
dog1.cry();
}
}
class Animal
{
int age;
String name; public void cry()
{
System.out.println("我是动物");
}
}
//猫猫类
class Cat extends Animal
{
//覆盖父类
public void cry()
{
System.out.println("猫猫叫");
}
}
//狗类
class Cat extends Animal
{
//覆盖父类
public void cry()
{
System.out.println("狗叫");
}
}

注意:

1.子类方法的返回类型、参数、方法名称要和父类方法的返回类型、参数方法名称完全一样,否则编译出错。

2.子类方法不能缩小父类方法的访问权限。(比如public不能被protected覆盖)

多态

package com.shun;
public class Demo5 { public static void main(String [] args){
//多态
/* Cat cat=new Cat();
cat.cry();
Dog dog=new Dog();
dog.cry();*/
Animal an=new Cat();
an.cry();
an=new Dog();
an.cry();
}
}
//动物类Animal
class Animal
{
String name;
int 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 cry()
{
System.out.println("不知道怎么叫");
}
}
class Dog extends Animal
{
//狗叫
public void cry()
{
System.out.println("狗叫");
}
}
class Cat extends Animal
{
//猫自己叫
public void cry()
{
System.out.println("猫叫");}

多态注意事项:

java允许父类的引用变量引用它的子类的实例(对象)Animal animal=new Cat();

这种转换自动完成;

多态定义:一个引用(类型)在不同情况下的多种状态。

抽象类的必要性:

package com.test2;
public class Test { public static void main(String[] args) { }
}
abstract class Animal
{
String name;
int age;
//动物会叫
public void cry();
abstract public void cry(); }
//当一个类继承的父类是抽象类的话,需要我们把抽象类中的所有抽象方法全部实现
class Cat extends Animal
{
//实现父类cry
public void cry()
{
//do nothing
System.out.println("猫叫");
}
}

定义:

1、用abstract关键字来修饰一个类时,这个类就叫抽象类

2、用abstract关键字来修饰一个方法时,这个方法就是抽象方法

3、抽象方法在编程中用的不多,但在公司笔试时较常见

注意:

1、抽象类不能被实例化

2、抽象方法不一定要包含abstract方法

3、一旦包含abstract方法,则这个类必须声明为abstract

4、抽象方法不能有主体

接口:给出一些没有内容的方法,封装到一起,要使用时将这些方法写出来

<class  类名 implements 接口{

方法;

变量;

}

>

接口:体现程序设计多态和高内聚低耦合的设计思想

<当一个类实现了一个接口,就要求该类把这个接口的所有方法统统实现

interface Usb{

    //声明两个方法
//开始工作
public void start();
//停止工作
public void stop();
}
//编写了照相机类
class Camera implements Usb{
public void start(){
System.out.println("开始工作");
}
public void stop(){
System.out.println("停止工作");
}
}
class Phone implement Usb{
public void start(){
System.out.println("开始工作");
}
public void stop(){
System.out.println("结束工作");
}
}
//计算机
class Computer{ //开始使用usb接口
public void useUsb(Usb usb){
usb.start();
usb.stop();
}
}
//接口继承别的接口
class Base{
}
interface Tt{
}
interface Son extends Tt{
}
public class Demo4_2{
public static void main(String[] args){
System.out.println(Usb.a);
Computer computer=new Computer(); //创建Camera
Camera cameral=new Camera();
//创建Phone
Phone phone1=new Phone();
computer.useUsb(camera1);
computer.useUsb(phone1); }

JAVA(2)的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  10. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. Unity Container 应用示例

    一 项目引用Unity 右键项目引用-> 管理Nuget包->搜索unity->安装Unity 和 Unity Interception Extension,如下图所示. 二 创建基 ...

  2. Oracle逻辑备份与恢复

      1. 备份的类型 按照备份方式的不同,可以把备份分为两类: 1.1 逻辑备份:指通过逻辑导出对数据进行备份.将数据库中的用户对象导出到一个二进制文件中,逻辑备份使用导入导出工具:EXPDP/IMP ...

  3. Linux小知识积累

    1.Linux图形界面和字符命令行界面的切换 从图形界面切换到字符界面,使用快捷键 Ctrl+Alt+F1 从字符界面切换到图形界面,使用快捷键 Ctrl+Alt+F7 2.解压文件 tar -xzv ...

  4. Phonegap中自定义插件的使用

    在phonegap中需要实现特定相关的功能,可能需要自定义扩展一下功能,那么扩展phonegap组件就成为了可能. 源代码结构图: 本文目的在于讲述怎么扩展一个phonegap组件以及实现. 针对ph ...

  5. Topcoder SRM570 900 CurvyonRails

    题意:给定一个网格,一些格子是障碍不用管,剩余的格子是城市,你可以修建铁路,铁路的形状可以是直的或者弯的,也就是说可以以这个点为节点连接它四联通的其中两个方块.要求用一个或多个环来覆盖所有城市.对于有 ...

  6. 160个crackme-之Acid burn.exe

    工具: Ollydbg(OD) 中文版 运行: 我们拿到一个小程序时,总要看看它到底有什么功能,或者说它阻碍了我们什么,也就是寻找突破口! 这就是程序运行后的主界面 我们进入Serial/Name后, ...

  7. pwnable.kr-random

    题目 首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明. rand(产生随机数) 表头文件: #include 定义函数 :int ...

  8. Jmeter性能测试入门(转)

    出处:http://www.cnblogs.com/by-dream/p/5611555.html Jmeter性能测试步骤 1. 添加线程组之后,先设置这两项: 2. 添加一个http请求 被测的u ...

  9. 百度echarts地图扩展动态加载geoCoord

    var data={}; for(var i=0;i<result.length;i++){ data[(""+result[i].name+"")]=e ...

  10. win7下安装Sass和compass

    由于项目需要我们使用到sass来编译css文件.本人在win7下开发 由于国内安装sass遇到了一些困难,后来不得不网查询,后来终于解决了,这里介绍一下 1.要安装sass环境必须要先安装rubyIn ...