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. box-sizing 属性、min-width属性、max-width属性

    1.box-sizing  这个属性是CSS3新增的属性.IE8开始兼容.box-sizing: border-box; border-box,就是边框的这个小盒.这个属性命令,width数值指的是b ...

  2. composer 一些使用说明

    1 使用订制的包 配置 "repositories": [ { "type": "path", "url": " ...

  3. git clone带用户名和密码的方式

    git clone http://username:password@127.0.0.1/res/res.git

  4. 【小月博客】 Html5 上传图片 移动端、PC端通用

    在博客园注册账号有些天了,感觉有些许欣慰,自己写的东西有人在看,有人在评论很是开心.(ps: 满足一下虚荣心吧!) 废话不多说了,说一下今天给大家分享的是 html5上传图片.我们是在移动端使用的,但 ...

  5. Spring Boot中的注解

    文章来源:http://www.tuicool.com/articles/bQnMra 在Spring Boot中几乎可以完全弃用xml配置文件,本文的主题是分析常用的注解. Spring最开始是为了 ...

  6. PHP造PDO对象和事务功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. gtp转换mbr

    http://wenku.baidu.com/link?url=P_t0U8Q-LIUdxVGHBefipAvbV6fg3jnX8hc8ugaRoo5WWd8GJePO8sBbtLON15gvOZh4 ...

  8. sae评测报告-2013最新版

    Author:MoonXue 上线时间:2009年9月,国内最早. 支持语言:PHP.JAVA.PYTHON 版本管理:SVN 可选数据库:MySQ.KVDB(非关系型) 特色服务:Web服务器配置工 ...

  9. java 中关于synchronized的通常用法

    package j2se.thread.test; /*** * synchronized(class)很特别,它会让另一个线程在任何需要获取class做为monitor的地方等待. * class与 ...

  10. Android中ListView控件的使用

    Android中ListView控件的使用 ListView展示数据的原理 在Android中,其实ListView就相当于web中的jsp,Adapter是适配器,它就相当于web中的Servlet ...